{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.5.2"
    },
    "colab": {
      "name": "resnet18.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "toc_visible": true
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "BuPU4Ta6XA9U",
        "colab_type": "code",
        "outputId": "32b649ea-97bd-43e9-dcfa-efa8a847bce4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "%tensorflow_version 2.x\n",
        "import tensorflow as tf\n",
        "print(tf.__version__)\n",
        "device_name = tf.test.gpu_device_name()\n",
        "if device_name != '/device:GPU:0':\n",
        "  raise SystemError('GPU device not found')\n",
        "print('Found GPU at: {}'.format(device_name))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2.2.0-rc4\n",
            "Found GPU at: /device:GPU:0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NZUYA6YqTrti",
        "colab_type": "code",
        "outputId": "506f2454-05d7-4a9a-b14f-766d3924b764",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/gdrive')\n"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Drive already mounted at /content/gdrive; to attempt to forcibly remount, call drive.mount(\"/content/gdrive\", force_remount=True).\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Wegi7sKXSL43",
        "colab_type": "code",
        "outputId": "56da7be4-dd70-45e0-c857-75c5cb83a426",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "\n",
        "cifar10 = tf.keras.datasets.cifar10\n",
        "\n",
        "(x_train, y_train), (x_test, y_test) = cifar10.load_data()\n",
        "x_train, x_test = x_train / 255.0, x_test / 255.0\n",
        "\n",
        "#x_validation = x_train[40000:]\n",
        "#y_validation = y_train[40000:]\n",
        "\n",
        "#x_train = x_train[:40000]\n",
        "#y_train = y_train[:40000]\n",
        "\n",
        "\n",
        "#x_test = x_test[]\n",
        "#y_test = y_test[:100]\n",
        "print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)\n",
        "print(x_train.dtype)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(50000, 32, 32, 3) (50000, 1) (10000, 32, 32, 3) (10000, 1)\n",
            "float64\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1QMtjOSJWKfb",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "y9v3oEWOSL56",
        "colab_type": "code",
        "outputId": "c0f1d7e3-449d-4e28-ad05-2e5958720659",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 374
        }
      },
      "source": [
        "import numpy as np\n",
        "from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense\n",
        "from tensorflow.keras import Model\n",
        "import tensorflow as tf\n",
        "\n",
        "np.set_printoptions(threshold=np.inf)\n",
        "\n",
        "class ResnetBlock(Model):\n",
        "\n",
        "    def __init__(self, filters, strides=1, residual_path=False):\n",
        "        super(ResnetBlock, self).__init__()\n",
        "        self.filters = filters\n",
        "        self.strides = strides\n",
        "        self.residual_path = residual_path\n",
        "\n",
        "        self.c1 = Conv2D(filters, (3, 3), strides=strides, padding='same', use_bias=False, input_shape=(32,32,3))\n",
        "        self.b1 = BatchNormalization()\n",
        "        self.a1 = Activation('relu')\n",
        "\n",
        "        self.c2 = Conv2D(filters, (3, 3), strides=1, padding='same', use_bias=False)\n",
        "        self.b2 = BatchNormalization()\n",
        "\n",
        "        # residual_path为True时，对输入进行下采样，即用1x1的卷积核做卷积操作，保证x能和F(x)维度相同，顺利相加\n",
        "        if residual_path:\n",
        "            self.down_c1 = Conv2D(filters, (1, 1), strides=strides, padding='same', use_bias=False)\n",
        "            self.down_b1 = BatchNormalization()\n",
        "        \n",
        "        self.a2 = Activation('relu')\n",
        "    \n",
        "    @tf.function\n",
        "    def call(self, inputs):\n",
        "        residual = inputs  # residual等于输入值本身，即residual=x\n",
        "        # 将输入通过卷积、BN层、激活层，计算F(x)\n",
        "        x = self.c1(inputs)\n",
        "        x = self.b1(x)\n",
        "        x = self.a1(x)\n",
        "\n",
        "        x = self.c2(x)\n",
        "        y = self.b2(x)\n",
        "\n",
        "        if self.residual_path:\n",
        "            residual = self.down_c1(inputs)\n",
        "            residual = self.down_b1(residual)\n",
        "\n",
        "        out = self.a2(y + residual)  # 最后输出的是两部分的和，即F(x)+x或F(x)+Wx,再过激活函数\n",
        "        return out\n",
        "\n",
        "\n",
        "class ResNet18(Model):\n",
        "\n",
        "    def __init__(self, block_list, initial_filters=64):  # block_list表示每个block有几个卷积层\n",
        "        super(ResNet18, self).__init__()\n",
        "        self.num_blocks = len(block_list)  # 共有几个block\n",
        "        self.block_list = block_list\n",
        "        self.out_filters = initial_filters\n",
        "        self.c1 = Conv2D(self.out_filters, (3, 3), strides=1, padding='same', use_bias=False)\n",
        "        self.b1 = BatchNormalization()\n",
        "        self.a1 = Activation('relu')\n",
        "        self.blocks = tf.keras.models.Sequential()\n",
        "        # 构建ResNet网络结构\n",
        "        for block_id in range(len(block_list)):  # 第几个resnet block\n",
        "            for layer_id in range(block_list[block_id]):  # 第几个卷积层\n",
        "\n",
        "                if block_id != 0 and layer_id == 0:  # 对除第一个block以外的每个block的输入进行下采样\n",
        "                    block = ResnetBlock(self.out_filters, strides=2, residual_path=True)\n",
        "                else:\n",
        "                    block = ResnetBlock(self.out_filters, residual_path=False)\n",
        "                self.blocks.add(block)  # 将构建好的block加入resnet\n",
        "            self.out_filters *= 2  # 下一个block的卷积核数是上一个block的2倍\n",
        "        self.p1 = tf.keras.layers.GlobalAveragePooling2D()\n",
        "        #self.d1 = tf.keras.layers.Dropout(0.3)\n",
        "        #self.b2 = BatchNormalization()\n",
        "        #self.a2 = Activation('relu')\n",
        "        self.f1 = tf.keras.layers.Dense(10, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())\n",
        "\n",
        "    @tf.function\n",
        "    def call(self, inputs):\n",
        "        x = self.c1(inputs)\n",
        "        x = self.b1(x)\n",
        "        x = self.a1(x)\n",
        "        x = self.blocks(x)\n",
        "        #x = self.b2(x)\n",
        "        #x = self.a2(x)\n",
        "        x = self.p1(x)\n",
        "        #x = self.d1(x)\n",
        "        y = self.f1(x)\n",
        "        return y\n",
        "\n",
        "\n",
        "model = ResNet18([2, 2, 2, 2])\n",
        "\n",
        "model.compile(optimizer='adam',\n",
        "       loss='sparse_categorical_crossentropy',\n",
        "       metrics=['sparse_categorical_accuracy'])\n",
        "\n",
        "model_filename = '/content/gdrive/My Drive/cifar_resnet18.h5'\n",
        "#pred = model.predict(x_test[0].reshape(-1,32,32,3))\n",
        "model.build(input_shape=(None,32,32,3))\n",
        "model.summary()\n",
        "try:\n",
        "    model.load_weights(model_filename)\n",
        "    print(\"load model pass\")\n",
        "except:\n",
        "    print(\"failed load\")\n",
        "    \n",
        "\n"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"res_net18_9\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "conv2d_180 (Conv2D)          multiple                  1728      \n",
            "_________________________________________________________________\n",
            "batch_normalization_180 (Bat multiple                  256       \n",
            "_________________________________________________________________\n",
            "activation_153 (Activation)  multiple                  0         \n",
            "_________________________________________________________________\n",
            "sequential_9 (Sequential)    multiple                  11176448  \n",
            "_________________________________________________________________\n",
            "global_average_pooling2d_9 ( multiple                  0         \n",
            "_________________________________________________________________\n",
            "dense_9 (Dense)              multiple                  5130      \n",
            "=================================================================\n",
            "Total params: 11,183,562\n",
            "Trainable params: 11,173,962\n",
            "Non-trainable params: 9,600\n",
            "_________________________________________________________________\n",
            "failed load\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zawL5_y5SL7A",
        "colab_type": "text"
      },
      "source": [
        "## 模型训练"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-notP8PnSL7F",
        "colab_type": "code",
        "outputId": "2c7ed526-7625-4868-e84d-651d245c713f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
        "batch_size = 256\n",
        "epochs = 100\n",
        "patience = 30\n",
        "logdir = './results/tb_results'\n",
        "\n",
        "def lr_schedule(epoch):\n",
        "    \"\"\"Learning Rate Schedule\n",
        "\n",
        "    Learning rate is scheduled to be reduced after 80, 120, 160, 180 epochs.\n",
        "    Called automatically every epoch as part of callbacks during training.\n",
        "\n",
        "    # Arguments\n",
        "        epoch (int): The number of epochs\n",
        "\n",
        "    # Returns\n",
        "        lr (float32): learning rate\n",
        "    \"\"\"\n",
        "    lr = 1e-3\n",
        "    if epoch > 180:\n",
        "        lr *= 0.5e-3\n",
        "    elif epoch > 160:\n",
        "        lr *= 1e-3\n",
        "    elif epoch > 120:\n",
        "        lr *= 1e-2\n",
        "    elif epoch > 80:\n",
        "        lr *= 1e-1\n",
        "    print('Learning rate: ', lr)\n",
        "    return lr\n",
        "\n",
        "callbacks = [\n",
        "    tf.keras.callbacks.TensorBoard(log_dir=logdir),\n",
        "    tf.keras.callbacks.ModelCheckpoint(filepath=model_filename,\n",
        "                      save_weights_only=True,\n",
        "                      save_best_only=True,\n",
        "                      verbose=1),\n",
        "    tf.keras.callbacks.EarlyStopping(monitor='val_loss',patience=patience),\n",
        "    tf.keras.callbacks.ReduceLROnPlateau(factor=np.sqrt(0.1),\n",
        "                      cooldown=0,\n",
        "                      patience=6,\n",
        "                      min_lr=1.0e-5),\n",
        "    #tf.keras.callbacks.LearningRateScheduler(lr_schedule)\n",
        "]\n",
        "\n",
        "image_gen_train = ImageDataGenerator(\n",
        "    # set input mean to 0 over the dataset\n",
        "        featurewise_center=False,\n",
        "        # set each sample mean to 0\n",
        "        samplewise_center=False,\n",
        "        # divide inputs by std of dataset\n",
        "        featurewise_std_normalization=False,\n",
        "        # divide each input by its std\n",
        "        samplewise_std_normalization=False,\n",
        "        # apply ZCA whitening\n",
        "        zca_whitening=False,\n",
        "        # epsilon for ZCA whitening\n",
        "        zca_epsilon=1e-06,\n",
        "        # randomly rotate images in the range (deg 0 to 180)\n",
        "        rotation_range=20,\n",
        "        # randomly shift images horizontally\n",
        "        width_shift_range=0.1,\n",
        "        # randomly shift images vertically\n",
        "        height_shift_range=0.1,\n",
        "        # set range for random shear\n",
        "        shear_range=0.,\n",
        "        # set range for random zoom\n",
        "        zoom_range=0.1,\n",
        "        # set range for random channel shifts\n",
        "        channel_shift_range=0.1,\n",
        "        # set mode for filling points outside the input boundaries\n",
        "        fill_mode='nearest',\n",
        "        # value used for fill_mode = \"constant\"\n",
        "        cval=0.,\n",
        "        # randomly flip images\n",
        "        horizontal_flip=True,\n",
        "        # randomly flip images\n",
        "        vertical_flip=False,\n",
        "        # set rescaling factor (applied before any other transformation)\n",
        "        rescale=None,\n",
        "        # set function that will be applied on each input\n",
        "        preprocessing_function=None,\n",
        "        # image data format, either \"channels_first\" or \"channels_last\"\n",
        "        data_format=None,\n",
        "        # fraction of images reserved for validation (strictly between 0 and 1)\n",
        "        validation_split=0.0\n",
        ")\n",
        "\n",
        "#对例子程序进行修改\n",
        "image_gen_train = ImageDataGenerator(\n",
        "    #rescale=1. / 255,\n",
        "    rotation_range=20,\n",
        "    width_shift_range=.15,\n",
        "    height_shift_range=.15,\n",
        "    horizontal_flip=True,\n",
        "    zoom_range=.15\n",
        ")\n",
        "\n",
        "image_gen_train.fit(x_train)\n",
        "\n",
        "history = model.fit_generator(#x_train, y_train,\n",
        "           image_gen_train.flow(x_train, y_train, batch_size=batch_size), \n",
        "           steps_per_epoch=(len(x_train))/batch_size, \n",
        "           epochs=epochs,\n",
        "           workers=4,\n",
        "           validation_data=(x_test, y_test), \n",
        "           callbacks=callbacks)\n",
        "model.summary()\n",
        "\n",
        "\n"
      ],
      "execution_count": 45,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Epoch 1/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 1.7948 - sparse_categorical_accuracy: 0.4225\n",
            "Epoch 00001: val_loss improved from inf to 4.99778, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 602ms/step - loss: 1.7948 - sparse_categorical_accuracy: 0.4225 - val_loss: 4.9978 - val_sparse_categorical_accuracy: 0.1022 - lr: 0.0010\n",
            "Epoch 2/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 1.2512 - sparse_categorical_accuracy: 0.5906\n",
            "Epoch 00002: val_loss improved from 4.99778 to 1.55479, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 604ms/step - loss: 1.2512 - sparse_categorical_accuracy: 0.5906 - val_loss: 1.5548 - val_sparse_categorical_accuracy: 0.4996 - lr: 0.0010\n",
            "Epoch 3/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 1.0024 - sparse_categorical_accuracy: 0.6694\n",
            "Epoch 00003: val_loss improved from 1.55479 to 0.91271, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 1.0024 - sparse_categorical_accuracy: 0.6694 - val_loss: 0.9127 - val_sparse_categorical_accuracy: 0.7094 - lr: 0.0010\n",
            "Epoch 4/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.8531 - sparse_categorical_accuracy: 0.7183\n",
            "Epoch 00004: val_loss did not improve from 0.91271\n",
            "196/195 [==============================] - 117s 596ms/step - loss: 0.8531 - sparse_categorical_accuracy: 0.7183 - val_loss: 1.2868 - val_sparse_categorical_accuracy: 0.6264 - lr: 0.0010\n",
            "Epoch 5/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.7419 - sparse_categorical_accuracy: 0.7526\n",
            "Epoch 00005: val_loss improved from 0.91271 to 0.81496, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 602ms/step - loss: 0.7419 - sparse_categorical_accuracy: 0.7526 - val_loss: 0.8150 - val_sparse_categorical_accuracy: 0.7395 - lr: 0.0010\n",
            "Epoch 6/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.6682 - sparse_categorical_accuracy: 0.7800\n",
            "Epoch 00006: val_loss did not improve from 0.81496\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.6682 - sparse_categorical_accuracy: 0.7800 - val_loss: 0.8541 - val_sparse_categorical_accuracy: 0.7376 - lr: 0.0010\n",
            "Epoch 7/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.6076 - sparse_categorical_accuracy: 0.7973\n",
            "Epoch 00007: val_loss improved from 0.81496 to 0.65259, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.6076 - sparse_categorical_accuracy: 0.7973 - val_loss: 0.6526 - val_sparse_categorical_accuracy: 0.7862 - lr: 0.0010\n",
            "Epoch 8/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.5609 - sparse_categorical_accuracy: 0.8139\n",
            "Epoch 00008: val_loss did not improve from 0.65259\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.5609 - sparse_categorical_accuracy: 0.8139 - val_loss: 0.8082 - val_sparse_categorical_accuracy: 0.7513 - lr: 0.0010\n",
            "Epoch 9/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.5275 - sparse_categorical_accuracy: 0.8235\n",
            "Epoch 00009: val_loss improved from 0.65259 to 0.57936, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.5275 - sparse_categorical_accuracy: 0.8235 - val_loss: 0.5794 - val_sparse_categorical_accuracy: 0.8143 - lr: 0.0010\n",
            "Epoch 10/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.4924 - sparse_categorical_accuracy: 0.8357\n",
            "Epoch 00010: val_loss did not improve from 0.57936\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.4924 - sparse_categorical_accuracy: 0.8357 - val_loss: 0.8279 - val_sparse_categorical_accuracy: 0.7635 - lr: 0.0010\n",
            "Epoch 11/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.4597 - sparse_categorical_accuracy: 0.8467\n",
            "Epoch 00011: val_loss did not improve from 0.57936\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.4597 - sparse_categorical_accuracy: 0.8467 - val_loss: 0.7690 - val_sparse_categorical_accuracy: 0.7779 - lr: 0.0010\n",
            "Epoch 12/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.4367 - sparse_categorical_accuracy: 0.8549\n",
            "Epoch 00012: val_loss improved from 0.57936 to 0.55308, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.4367 - sparse_categorical_accuracy: 0.8549 - val_loss: 0.5531 - val_sparse_categorical_accuracy: 0.8147 - lr: 0.0010\n",
            "Epoch 13/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.4134 - sparse_categorical_accuracy: 0.8620\n",
            "Epoch 00013: val_loss did not improve from 0.55308\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.4134 - sparse_categorical_accuracy: 0.8620 - val_loss: 0.7271 - val_sparse_categorical_accuracy: 0.7804 - lr: 0.0010\n",
            "Epoch 14/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3977 - sparse_categorical_accuracy: 0.8675\n",
            "Epoch 00014: val_loss did not improve from 0.55308\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.3977 - sparse_categorical_accuracy: 0.8675 - val_loss: 0.6101 - val_sparse_categorical_accuracy: 0.8078 - lr: 0.0010\n",
            "Epoch 15/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3810 - sparse_categorical_accuracy: 0.8730\n",
            "Epoch 00015: val_loss did not improve from 0.55308\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.3810 - sparse_categorical_accuracy: 0.8730 - val_loss: 0.7092 - val_sparse_categorical_accuracy: 0.7866 - lr: 0.0010\n",
            "Epoch 16/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3613 - sparse_categorical_accuracy: 0.8798\n",
            "Epoch 00016: val_loss did not improve from 0.55308\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.3613 - sparse_categorical_accuracy: 0.8798 - val_loss: 0.8820 - val_sparse_categorical_accuracy: 0.7463 - lr: 0.0010\n",
            "Epoch 17/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3484 - sparse_categorical_accuracy: 0.8856\n",
            "Epoch 00017: val_loss improved from 0.55308 to 0.49010, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.3484 - sparse_categorical_accuracy: 0.8856 - val_loss: 0.4901 - val_sparse_categorical_accuracy: 0.8475 - lr: 0.0010\n",
            "Epoch 18/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3281 - sparse_categorical_accuracy: 0.8916\n",
            "Epoch 00018: val_loss did not improve from 0.49010\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.3281 - sparse_categorical_accuracy: 0.8916 - val_loss: 0.5464 - val_sparse_categorical_accuracy: 0.8285 - lr: 0.0010\n",
            "Epoch 19/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3208 - sparse_categorical_accuracy: 0.8935\n",
            "Epoch 00019: val_loss did not improve from 0.49010\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.3208 - sparse_categorical_accuracy: 0.8935 - val_loss: 0.6312 - val_sparse_categorical_accuracy: 0.8128 - lr: 0.0010\n",
            "Epoch 20/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3101 - sparse_categorical_accuracy: 0.8979\n",
            "Epoch 00020: val_loss improved from 0.49010 to 0.47426, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 604ms/step - loss: 0.3101 - sparse_categorical_accuracy: 0.8979 - val_loss: 0.4743 - val_sparse_categorical_accuracy: 0.8522 - lr: 0.0010\n",
            "Epoch 21/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.3005 - sparse_categorical_accuracy: 0.9012\n",
            "Epoch 00021: val_loss did not improve from 0.47426\n",
            "196/195 [==============================] - 117s 599ms/step - loss: 0.3005 - sparse_categorical_accuracy: 0.9012 - val_loss: 0.5462 - val_sparse_categorical_accuracy: 0.8333 - lr: 0.0010\n",
            "Epoch 22/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2905 - sparse_categorical_accuracy: 0.9045\n",
            "Epoch 00022: val_loss improved from 0.47426 to 0.46158, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.2905 - sparse_categorical_accuracy: 0.9045 - val_loss: 0.4616 - val_sparse_categorical_accuracy: 0.8556 - lr: 0.0010\n",
            "Epoch 23/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2750 - sparse_categorical_accuracy: 0.9101\n",
            "Epoch 00023: val_loss did not improve from 0.46158\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.2750 - sparse_categorical_accuracy: 0.9101 - val_loss: 0.5014 - val_sparse_categorical_accuracy: 0.8440 - lr: 0.0010\n",
            "Epoch 24/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2638 - sparse_categorical_accuracy: 0.9132\n",
            "Epoch 00024: val_loss did not improve from 0.46158\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.2638 - sparse_categorical_accuracy: 0.9132 - val_loss: 0.4899 - val_sparse_categorical_accuracy: 0.8476 - lr: 0.0010\n",
            "Epoch 25/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2619 - sparse_categorical_accuracy: 0.9130\n",
            "Epoch 00025: val_loss did not improve from 0.46158\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.2619 - sparse_categorical_accuracy: 0.9130 - val_loss: 0.4987 - val_sparse_categorical_accuracy: 0.8538 - lr: 0.0010\n",
            "Epoch 26/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2471 - sparse_categorical_accuracy: 0.9194\n",
            "Epoch 00026: val_loss did not improve from 0.46158\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.2471 - sparse_categorical_accuracy: 0.9194 - val_loss: 0.5654 - val_sparse_categorical_accuracy: 0.8395 - lr: 0.0010\n",
            "Epoch 27/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2397 - sparse_categorical_accuracy: 0.9218\n",
            "Epoch 00027: val_loss improved from 0.46158 to 0.45528, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.2397 - sparse_categorical_accuracy: 0.9218 - val_loss: 0.4553 - val_sparse_categorical_accuracy: 0.8641 - lr: 0.0010\n",
            "Epoch 28/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2397 - sparse_categorical_accuracy: 0.9218\n",
            "Epoch 00028: val_loss improved from 0.45528 to 0.40160, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 602ms/step - loss: 0.2397 - sparse_categorical_accuracy: 0.9218 - val_loss: 0.4016 - val_sparse_categorical_accuracy: 0.8826 - lr: 0.0010\n",
            "Epoch 29/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2234 - sparse_categorical_accuracy: 0.9265\n",
            "Epoch 00029: val_loss did not improve from 0.40160\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.2234 - sparse_categorical_accuracy: 0.9265 - val_loss: 0.4722 - val_sparse_categorical_accuracy: 0.8603 - lr: 0.0010\n",
            "Epoch 30/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2200 - sparse_categorical_accuracy: 0.9279\n",
            "Epoch 00030: val_loss did not improve from 0.40160\n",
            "196/195 [==============================] - 117s 599ms/step - loss: 0.2200 - sparse_categorical_accuracy: 0.9279 - val_loss: 0.4211 - val_sparse_categorical_accuracy: 0.8687 - lr: 0.0010\n",
            "Epoch 31/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2097 - sparse_categorical_accuracy: 0.9322\n",
            "Epoch 00031: val_loss improved from 0.40160 to 0.38592, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.2097 - sparse_categorical_accuracy: 0.9322 - val_loss: 0.3859 - val_sparse_categorical_accuracy: 0.8849 - lr: 0.0010\n",
            "Epoch 32/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2068 - sparse_categorical_accuracy: 0.9335\n",
            "Epoch 00032: val_loss did not improve from 0.38592\n",
            "196/195 [==============================] - 118s 600ms/step - loss: 0.2068 - sparse_categorical_accuracy: 0.9335 - val_loss: 0.4441 - val_sparse_categorical_accuracy: 0.8696 - lr: 0.0010\n",
            "Epoch 33/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.2029 - sparse_categorical_accuracy: 0.9344\n",
            "Epoch 00033: val_loss improved from 0.38592 to 0.35540, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 602ms/step - loss: 0.2029 - sparse_categorical_accuracy: 0.9344 - val_loss: 0.3554 - val_sparse_categorical_accuracy: 0.8928 - lr: 0.0010\n",
            "Epoch 34/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1937 - sparse_categorical_accuracy: 0.9375\n",
            "Epoch 00034: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.1937 - sparse_categorical_accuracy: 0.9375 - val_loss: 0.4558 - val_sparse_categorical_accuracy: 0.8694 - lr: 0.0010\n",
            "Epoch 35/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1877 - sparse_categorical_accuracy: 0.9388\n",
            "Epoch 00035: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.1877 - sparse_categorical_accuracy: 0.9388 - val_loss: 0.4026 - val_sparse_categorical_accuracy: 0.8838 - lr: 0.0010\n",
            "Epoch 36/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1854 - sparse_categorical_accuracy: 0.9403\n",
            "Epoch 00036: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.1854 - sparse_categorical_accuracy: 0.9403 - val_loss: 0.4693 - val_sparse_categorical_accuracy: 0.8626 - lr: 0.0010\n",
            "Epoch 37/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1828 - sparse_categorical_accuracy: 0.9409\n",
            "Epoch 00037: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.1828 - sparse_categorical_accuracy: 0.9409 - val_loss: 0.4074 - val_sparse_categorical_accuracy: 0.8811 - lr: 0.0010\n",
            "Epoch 38/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1726 - sparse_categorical_accuracy: 0.9455\n",
            "Epoch 00038: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.1726 - sparse_categorical_accuracy: 0.9455 - val_loss: 0.4320 - val_sparse_categorical_accuracy: 0.8779 - lr: 0.0010\n",
            "Epoch 39/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1660 - sparse_categorical_accuracy: 0.9470\n",
            "Epoch 00039: val_loss did not improve from 0.35540\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.1660 - sparse_categorical_accuracy: 0.9470 - val_loss: 0.3619 - val_sparse_categorical_accuracy: 0.8948 - lr: 0.0010\n",
            "Epoch 40/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.1155 - sparse_categorical_accuracy: 0.9651\n",
            "Epoch 00040: val_loss improved from 0.35540 to 0.25006, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 604ms/step - loss: 0.1155 - sparse_categorical_accuracy: 0.9651 - val_loss: 0.2501 - val_sparse_categorical_accuracy: 0.9257 - lr: 3.1623e-04\n",
            "Epoch 41/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0974 - sparse_categorical_accuracy: 0.9713\n",
            "Epoch 00041: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0974 - sparse_categorical_accuracy: 0.9713 - val_loss: 0.2520 - val_sparse_categorical_accuracy: 0.9271 - lr: 3.1623e-04\n",
            "Epoch 42/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0976 - sparse_categorical_accuracy: 0.9709\n",
            "Epoch 00042: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0976 - sparse_categorical_accuracy: 0.9709 - val_loss: 0.2791 - val_sparse_categorical_accuracy: 0.9198 - lr: 3.1623e-04\n",
            "Epoch 43/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0904 - sparse_categorical_accuracy: 0.9726\n",
            "Epoch 00043: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0904 - sparse_categorical_accuracy: 0.9726 - val_loss: 0.2611 - val_sparse_categorical_accuracy: 0.9262 - lr: 3.1623e-04\n",
            "Epoch 44/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0855 - sparse_categorical_accuracy: 0.9748\n",
            "Epoch 00044: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0855 - sparse_categorical_accuracy: 0.9748 - val_loss: 0.2847 - val_sparse_categorical_accuracy: 0.9215 - lr: 3.1623e-04\n",
            "Epoch 45/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0848 - sparse_categorical_accuracy: 0.9755\n",
            "Epoch 00045: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0848 - sparse_categorical_accuracy: 0.9755 - val_loss: 0.2531 - val_sparse_categorical_accuracy: 0.9275 - lr: 3.1623e-04\n",
            "Epoch 46/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0791 - sparse_categorical_accuracy: 0.9773\n",
            "Epoch 00046: val_loss did not improve from 0.25006\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0791 - sparse_categorical_accuracy: 0.9773 - val_loss: 0.2664 - val_sparse_categorical_accuracy: 0.9231 - lr: 3.1623e-04\n",
            "Epoch 47/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0677 - sparse_categorical_accuracy: 0.9814\n",
            "Epoch 00047: val_loss improved from 0.25006 to 0.24693, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.0677 - sparse_categorical_accuracy: 0.9814 - val_loss: 0.2469 - val_sparse_categorical_accuracy: 0.9319 - lr: 1.0000e-04\n",
            "Epoch 48/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0627 - sparse_categorical_accuracy: 0.9832\n",
            "Epoch 00048: val_loss improved from 0.24693 to 0.24138, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 604ms/step - loss: 0.0627 - sparse_categorical_accuracy: 0.9832 - val_loss: 0.2414 - val_sparse_categorical_accuracy: 0.9337 - lr: 1.0000e-04\n",
            "Epoch 49/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0619 - sparse_categorical_accuracy: 0.9833\n",
            "Epoch 00049: val_loss did not improve from 0.24138\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0619 - sparse_categorical_accuracy: 0.9833 - val_loss: 0.2535 - val_sparse_categorical_accuracy: 0.9309 - lr: 1.0000e-04\n",
            "Epoch 50/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0586 - sparse_categorical_accuracy: 0.9848\n",
            "Epoch 00050: val_loss did not improve from 0.24138\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0586 - sparse_categorical_accuracy: 0.9848 - val_loss: 0.2493 - val_sparse_categorical_accuracy: 0.9321 - lr: 1.0000e-04\n",
            "Epoch 51/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0563 - sparse_categorical_accuracy: 0.9857\n",
            "Epoch 00051: val_loss did not improve from 0.24138\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0563 - sparse_categorical_accuracy: 0.9857 - val_loss: 0.2534 - val_sparse_categorical_accuracy: 0.9292 - lr: 1.0000e-04\n",
            "Epoch 52/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0576 - sparse_categorical_accuracy: 0.9851\n",
            "Epoch 00052: val_loss did not improve from 0.24138\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0576 - sparse_categorical_accuracy: 0.9851 - val_loss: 0.2447 - val_sparse_categorical_accuracy: 0.9329 - lr: 1.0000e-04\n",
            "Epoch 53/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0562 - sparse_categorical_accuracy: 0.9851\n",
            "Epoch 00053: val_loss did not improve from 0.24138\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0562 - sparse_categorical_accuracy: 0.9851 - val_loss: 0.2485 - val_sparse_categorical_accuracy: 0.9330 - lr: 1.0000e-04\n",
            "Epoch 54/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0546 - sparse_categorical_accuracy: 0.9857\n",
            "Epoch 00054: val_loss improved from 0.24138 to 0.23422, saving model to /content/gdrive/My Drive/cifar_resnet18.h5\n",
            "196/195 [==============================] - 118s 603ms/step - loss: 0.0546 - sparse_categorical_accuracy: 0.9857 - val_loss: 0.2342 - val_sparse_categorical_accuracy: 0.9351 - lr: 1.0000e-04\n",
            "Epoch 55/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0537 - sparse_categorical_accuracy: 0.9857\n",
            "Epoch 00055: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0537 - sparse_categorical_accuracy: 0.9857 - val_loss: 0.2525 - val_sparse_categorical_accuracy: 0.9323 - lr: 1.0000e-04\n",
            "Epoch 56/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0523 - sparse_categorical_accuracy: 0.9864\n",
            "Epoch 00056: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0523 - sparse_categorical_accuracy: 0.9864 - val_loss: 0.2479 - val_sparse_categorical_accuracy: 0.9329 - lr: 1.0000e-04\n",
            "Epoch 57/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0549 - sparse_categorical_accuracy: 0.9851\n",
            "Epoch 00057: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0549 - sparse_categorical_accuracy: 0.9851 - val_loss: 0.2533 - val_sparse_categorical_accuracy: 0.9330 - lr: 1.0000e-04\n",
            "Epoch 58/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0512 - sparse_categorical_accuracy: 0.9872\n",
            "Epoch 00058: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0512 - sparse_categorical_accuracy: 0.9872 - val_loss: 0.2501 - val_sparse_categorical_accuracy: 0.9302 - lr: 1.0000e-04\n",
            "Epoch 59/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0508 - sparse_categorical_accuracy: 0.9872\n",
            "Epoch 00059: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0508 - sparse_categorical_accuracy: 0.9872 - val_loss: 0.2570 - val_sparse_categorical_accuracy: 0.9317 - lr: 1.0000e-04\n",
            "Epoch 60/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0500 - sparse_categorical_accuracy: 0.9870\n",
            "Epoch 00060: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 596ms/step - loss: 0.0500 - sparse_categorical_accuracy: 0.9870 - val_loss: 0.2500 - val_sparse_categorical_accuracy: 0.9324 - lr: 1.0000e-04\n",
            "Epoch 61/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0460 - sparse_categorical_accuracy: 0.9887\n",
            "Epoch 00061: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0460 - sparse_categorical_accuracy: 0.9887 - val_loss: 0.2488 - val_sparse_categorical_accuracy: 0.9331 - lr: 3.1623e-05\n",
            "Epoch 62/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0450 - sparse_categorical_accuracy: 0.9885\n",
            "Epoch 00062: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0450 - sparse_categorical_accuracy: 0.9885 - val_loss: 0.2453 - val_sparse_categorical_accuracy: 0.9344 - lr: 3.1623e-05\n",
            "Epoch 63/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0438 - sparse_categorical_accuracy: 0.9897\n",
            "Epoch 00063: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0438 - sparse_categorical_accuracy: 0.9897 - val_loss: 0.2414 - val_sparse_categorical_accuracy: 0.9343 - lr: 3.1623e-05\n",
            "Epoch 64/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0450 - sparse_categorical_accuracy: 0.9891\n",
            "Epoch 00064: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0450 - sparse_categorical_accuracy: 0.9891 - val_loss: 0.2490 - val_sparse_categorical_accuracy: 0.9343 - lr: 3.1623e-05\n",
            "Epoch 65/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0433 - sparse_categorical_accuracy: 0.9889\n",
            "Epoch 00065: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0433 - sparse_categorical_accuracy: 0.9889 - val_loss: 0.2445 - val_sparse_categorical_accuracy: 0.9341 - lr: 3.1623e-05\n",
            "Epoch 66/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0434 - sparse_categorical_accuracy: 0.9895\n",
            "Epoch 00066: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0434 - sparse_categorical_accuracy: 0.9895 - val_loss: 0.2479 - val_sparse_categorical_accuracy: 0.9342 - lr: 3.1623e-05\n",
            "Epoch 67/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0413 - sparse_categorical_accuracy: 0.9904\n",
            "Epoch 00067: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 599ms/step - loss: 0.0413 - sparse_categorical_accuracy: 0.9904 - val_loss: 0.2459 - val_sparse_categorical_accuracy: 0.9350 - lr: 1.0000e-05\n",
            "Epoch 68/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0422 - sparse_categorical_accuracy: 0.9899\n",
            "Epoch 00068: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0422 - sparse_categorical_accuracy: 0.9899 - val_loss: 0.2457 - val_sparse_categorical_accuracy: 0.9342 - lr: 1.0000e-05\n",
            "Epoch 69/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0415 - sparse_categorical_accuracy: 0.9898\n",
            "Epoch 00069: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0415 - sparse_categorical_accuracy: 0.9898 - val_loss: 0.2473 - val_sparse_categorical_accuracy: 0.9349 - lr: 1.0000e-05\n",
            "Epoch 70/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0421 - sparse_categorical_accuracy: 0.9897\n",
            "Epoch 00070: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0421 - sparse_categorical_accuracy: 0.9897 - val_loss: 0.2466 - val_sparse_categorical_accuracy: 0.9347 - lr: 1.0000e-05\n",
            "Epoch 71/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0414 - sparse_categorical_accuracy: 0.9901\n",
            "Epoch 00071: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0414 - sparse_categorical_accuracy: 0.9901 - val_loss: 0.2457 - val_sparse_categorical_accuracy: 0.9350 - lr: 1.0000e-05\n",
            "Epoch 72/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0405 - sparse_categorical_accuracy: 0.9906\n",
            "Epoch 00072: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0405 - sparse_categorical_accuracy: 0.9906 - val_loss: 0.2438 - val_sparse_categorical_accuracy: 0.9366 - lr: 1.0000e-05\n",
            "Epoch 73/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0402 - sparse_categorical_accuracy: 0.9906\n",
            "Epoch 00073: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 595ms/step - loss: 0.0402 - sparse_categorical_accuracy: 0.9906 - val_loss: 0.2430 - val_sparse_categorical_accuracy: 0.9364 - lr: 1.0000e-05\n",
            "Epoch 74/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0427 - sparse_categorical_accuracy: 0.9896\n",
            "Epoch 00074: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 596ms/step - loss: 0.0427 - sparse_categorical_accuracy: 0.9896 - val_loss: 0.2447 - val_sparse_categorical_accuracy: 0.9362 - lr: 1.0000e-05\n",
            "Epoch 75/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0414 - sparse_categorical_accuracy: 0.9896\n",
            "Epoch 00075: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0414 - sparse_categorical_accuracy: 0.9896 - val_loss: 0.2435 - val_sparse_categorical_accuracy: 0.9355 - lr: 1.0000e-05\n",
            "Epoch 76/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0413 - sparse_categorical_accuracy: 0.9904\n",
            "Epoch 00076: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0413 - sparse_categorical_accuracy: 0.9904 - val_loss: 0.2440 - val_sparse_categorical_accuracy: 0.9365 - lr: 1.0000e-05\n",
            "Epoch 77/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0410 - sparse_categorical_accuracy: 0.9902\n",
            "Epoch 00077: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 596ms/step - loss: 0.0410 - sparse_categorical_accuracy: 0.9902 - val_loss: 0.2442 - val_sparse_categorical_accuracy: 0.9359 - lr: 1.0000e-05\n",
            "Epoch 78/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0395 - sparse_categorical_accuracy: 0.9907\n",
            "Epoch 00078: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0395 - sparse_categorical_accuracy: 0.9907 - val_loss: 0.2428 - val_sparse_categorical_accuracy: 0.9359 - lr: 1.0000e-05\n",
            "Epoch 79/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0404 - sparse_categorical_accuracy: 0.9906\n",
            "Epoch 00079: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 596ms/step - loss: 0.0404 - sparse_categorical_accuracy: 0.9906 - val_loss: 0.2435 - val_sparse_categorical_accuracy: 0.9360 - lr: 1.0000e-05\n",
            "Epoch 80/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0395 - sparse_categorical_accuracy: 0.9909\n",
            "Epoch 00080: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0395 - sparse_categorical_accuracy: 0.9909 - val_loss: 0.2419 - val_sparse_categorical_accuracy: 0.9360 - lr: 1.0000e-05\n",
            "Epoch 81/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0404 - sparse_categorical_accuracy: 0.9906\n",
            "Epoch 00081: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0404 - sparse_categorical_accuracy: 0.9906 - val_loss: 0.2442 - val_sparse_categorical_accuracy: 0.9367 - lr: 1.0000e-05\n",
            "Epoch 82/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0399 - sparse_categorical_accuracy: 0.9904\n",
            "Epoch 00082: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 597ms/step - loss: 0.0399 - sparse_categorical_accuracy: 0.9904 - val_loss: 0.2451 - val_sparse_categorical_accuracy: 0.9352 - lr: 1.0000e-05\n",
            "Epoch 83/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0376 - sparse_categorical_accuracy: 0.9917\n",
            "Epoch 00083: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0376 - sparse_categorical_accuracy: 0.9917 - val_loss: 0.2425 - val_sparse_categorical_accuracy: 0.9361 - lr: 1.0000e-05\n",
            "Epoch 84/100\n",
            "196/195 [==============================] - ETA: 0s - loss: 0.0395 - sparse_categorical_accuracy: 0.9909\n",
            "Epoch 00084: val_loss did not improve from 0.23422\n",
            "196/195 [==============================] - 117s 598ms/step - loss: 0.0395 - sparse_categorical_accuracy: 0.9909 - val_loss: 0.2439 - val_sparse_categorical_accuracy: 0.9350 - lr: 1.0000e-05\n",
            "Model: \"res_net18_9\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "conv2d_180 (Conv2D)          multiple                  1728      \n",
            "_________________________________________________________________\n",
            "batch_normalization_180 (Bat multiple                  256       \n",
            "_________________________________________________________________\n",
            "activation_153 (Activation)  multiple                  0         \n",
            "_________________________________________________________________\n",
            "sequential_9 (Sequential)    multiple                  11176448  \n",
            "_________________________________________________________________\n",
            "global_average_pooling2d_9 ( multiple                  0         \n",
            "_________________________________________________________________\n",
            "dense_9 (Dense)              multiple                  5130      \n",
            "=================================================================\n",
            "Total params: 11,183,562\n",
            "Trainable params: 11,173,962\n",
            "Non-trainable params: 9,600\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TYyYJGRbdzGu",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "L1LFQbk6SL9x",
        "colab_type": "code",
        "outputId": "5cd1ddbb-28e1-424a-d9e3-64b1eeae8b95",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 541
        }
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "def visual_train_history(history, train_metric, validation_metric):\n",
        "    plt.plot(history.history[train_metric])\n",
        "    plt.plot(history.history[validation_metric])\n",
        "    plt.ylabel(train_metric)\n",
        "    plt.xlabel('epochs')\n",
        "    plt.legend(['train','validation'], loc='upper left')\n",
        "    plt.show()\n",
        "visual_train_history(history, 'sparse_categorical_accuracy', 'val_sparse_categorical_accuracy')\n",
        "visual_train_history(history, 'loss', 'val_loss')"
      ],
      "execution_count": 55,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEGCAYAAABvtY4XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3deZhcVZ3/8fe3lt67s3Y6G6HDEgjZkwaCGBZBBtlBICigoIjyw0FRR9EZx2VwhpnhQXRUEAVERBADAUYBWWQd2RIgISGRsCSks3Vn6U7v3VV1fn+cW70knaTTSXV13/68nqee6qp7695Tlcrnnjrn3HPNOYeIiIRPJNsFEBGRzFDAi4iElAJeRCSkFPAiIiGlgBcRCalYtgvQ2ciRI115eXm2iyEiMmAsXrx4s3OutLtl/Srgy8vLWbRoUbaLISIyYJjZml0tUxONiEhIKeBFREJKAS8iElL9qg2+O21tbVRWVtLc3JztooRCXl4e48ePJx6PZ7soIpJh/T7gKysrKS4upry8HDPLdnEGNOccW7ZsobKykokTJ2a7OCKSYRkNeDNbDdQBSSDhnKvY2200Nzcr3PcTM2PEiBFUV1dnuygi0gf6ogZ/onNu875sQOG+/+izFBk8wtHJWrcRmrdnuxQiIv1KpgPeAU+Y2WIzu7K7FczsSjNbZGaLet10UL8JWur2oZi7VlNTwy9+8Yu9ft1pp51GTU1NBkokItIzmQ74jzrnZgOfAK42s+N2XME5d5tzrsI5V1Fa2u3Ztj1g4FL7VNBd2VXAJxKJ3b7u0UcfZejQoRkpk4hIT2Q04J1z64L7KmAhcFRGdmSG/7Gw/1133XW89957zJw5kyOPPJJ58+Zx1llnccQRRwBwzjnnMGfOHKZMmcJtt93W/rry8nI2b97M6tWrmTx5Ml/4wheYMmUKp5xyCk1NTRkpq4hIZxnrZDWzQiDinKsL/j4F+OG+bPMH/7uct9d309be1gC2GWLr9nqbR4wt4XtnTtnl8htuuIFly5bx5ptv8uyzz3L66aezbNmy9mGGd9xxB8OHD6epqYkjjzyST37yk4wYMaLLNlatWsW9997Lr371Ky688EIeeOABLrnkkr0uq4jI3sjkKJoyYGEwaiMG/N4593hmdtV3I0OOOuqoLmPIf/rTn7Jw4UIA1q5dy6pVq3YK+IkTJzJz5kwA5syZw+rVq/usvCIyeGUs4J1z7wMz9uc2d1nTrloBsVwYftD+3F23CgsL2/9+9tlneeqpp3jppZcoKCjghBNO6PaM29zc3Pa/o9GommhEpE+EY5ikRcBlpg2+uLiYurruR+jU1tYybNgwCgoKWLlyJS+//HJGyiAi0hv9fqqCnsncKJoRI0Zw7LHHMnXqVPLz8ykrK2tfduqpp3LrrbcyefJkDjvsMObOnZuRMoiI9Ia5DNV8e6OiosLteMGPFStWMHny5N2/cPMqX4MvnZTB0oVHjz5TERkQzGzxrqaBCUkTTeaGSYqIDFThCHgy1wYvIjJQhSPgLXNt8CIiA1VIAj6CmmhERLoKScCbmmhERHYQjoDP4DBJEZGBKhwB349G0RQVFQGwfv16zj///G7XOeGEE9hxOOiObr75ZhobG9sfa/phEdlbIQn4/jeKZuzYsSxYsKDXr98x4DX9sIjsrXAEPEENPgMhf9111/Hzn/+8/fH3v/99rr/+ek466SRmz57NtGnTePjhh3d63erVq5k6dSoATU1NXHTRRUyePJlzzz23y1w0V111FRUVFUyZMoXvfe97gJ/AbP369Zx44omceOKJQMf0wwA33XQTU6dOZerUqdx8883t+9O0xCLS2cCaquCx62DjWzs/n2yFZAvkFLHXM0uOngafuGGXi+fPn89Xv/pVrr76agDuv/9+/vKXv3DNNddQUlLC5s2bmTt3LmedddYur3d6yy23UFBQwIoVK1i6dCmzZ89uX/ajH/2I4cOHk0wmOemkk1i6dCnXXHMNN910E8888wwjR47ssq3Fixdz55138sorr+Cc4+ijj+b4449n2LBhmpZYRLoISQ0+c2bNmkVVVRXr169nyZIlDBs2jNGjR/Od73yH6dOnc/LJJ7Nu3To2bdq0y208//zz7UE7ffp0pk+f3r7s/vvvZ/bs2cyaNYvly5fz9ttv77Y8L774Iueeey6FhYUUFRVx3nnn8cILLwCallhEuhpYNfhd1bQbqqG2EsqmQjS+33d7wQUXsGDBAjZu3Mj8+fO55557qK6uZvHixcTjccrLy7udJnhPPvjgA2688UZee+01hg0bxmWXXdar7aRpWmIR6SwkNfigaSRDHa3z58/nvvvuY8GCBVxwwQXU1tYyatQo4vE4zzzzDGvWrNnt64877jh+//vfA7Bs2TKWLl0KwPbt2yksLGTIkCFs2rSJxx57rP01u5qmeN68eTz00EM0NjbS0NDAwoULmTdv3n58tyISFgOrBr8r7W3fmQn4KVOmUFdXx7hx4xgzZgwXX3wxZ555JtOmTaOiooLDDz98t6+/6qqruPzyy5k8eTKTJ09mzpw5AMyYMYNZs2Zx+OGHc8ABB3Dssce2v+bKK6/k1FNPZezYsTzzzDPtz8+ePZvLLruMo47yl7e94oormDVrlppjRGQn4ZguuGkbbFsNpYdDPD9zBQwJTRcsEh7hny44w000IiIDUTgC3tJvQwEvIpI2IAJ+j81I6TZ4zUezR/2pSU5EMqvfB3xeXh5btmzZQzCpiaYnnHNs2bKFvLy8bBdFRPpAvx9FM378eCorK6murt71SolWqK+CzU6drHuQl5fH+PHjs10MEekD/T7g4/E4EydO3P1KG5fBAxfChb+FyWf3TcFERPq5ft9E0yOx4AzORGt2yyEi0o+EI+CjOf4+2ZLdcoiI9CPhCPj2GrwCXkQkLRwB316DVxONiEiaAl5EJKTCEfDqZBUR2Uk4Aj4SA0ydrCIinWQ84M0samZvmNmfMrgTX4tXJ6uISLu+qMF/BViR8b1Ec9UGLyLSSUYD3szGA6cDv87kfgCI5agGLyLSSaZr8DcD3wR2Oc2jmV1pZovMbNFu55vZk2guJNt6/3oRkZDJWMCb2RlAlXNu8e7Wc87d5pyrcM5VlJaW9n6H0bg6WUVEOslkDf5Y4CwzWw3cB3zMzH6Xsb2pk1VEpIuMBbxz7tvOufHOuXLgIuCvzrlLMrU/ojnqZBUR6SQc4+BBNXgRkR30yXzwzrlngWczuhMNkxQR6SJENXg10YiIdBaegI9qHLyISGfhCnjV4EVE2oUn4NXJKiLSRXgCXp2sIiJdhCfgNReNiEgX4Ql4zUUjItJFiAJec9GIiHQWnoBPd7I6l+2SiIj0C+EJ+Ggu4CCVyHZJRET6hfAEfCzH36ujVUQECFPAR3P9vYZKiogAYQp41eBFRLoIT8CrBi8i0kWIAj6owSvgRUSAMAW8mmhERLoIT8C3N9Eo4EVEIEwB316DVxONiAiEKeBVgxcR6SI8AR9LB7wmHBMRgTAFfDTu79XJKiIChCrg1UQjItJZeAJenawiIl2EJ+BVgxcR6SI8AZ/uZFUNXkQECFPAa6oCEZEuQhjwaqIREYEwBryaaEREgDAFfCQCEV14W0QkLTwBD8GFt1WDFxGBsAV8NEc1eBGRQMYC3szyzOxVM1tiZsvN7AeZ2le7WK5G0YiIBGIZ3HYL8DHnXL2ZxYEXzewx59zLGdtjNEdNNCIigYwFvHPOAfXBw3hwc5naH6AmGhGRTjLaBm9mUTN7E6gCnnTOvdLNOlea2SIzW1RdXb1vO1Qnq4hIu4wGvHMu6ZybCYwHjjKzqd2sc5tzrsI5V1FaWrpvO1QNXkSkXZ+MonHO1QDPAKdmdEexXM0HLyISyOQomlIzGxr8nQ98HFiZqf0BQQ1eV3QSEYHMjqIZA9xlZlH8geR+59yfMrg/X4Nv2Z7RXYiIDBSZHEWzFJiVqe13S8MkRUTa6UxWEZGQClfAa5ikiEi7cAW8avAiIu3CFfCai0ZEpF24Al6drCIi7cIV8LFcNdGIiATCFfDRHEglIJXKdklERLKuRwFvZl8xsxLzbjez183slEwXbq/pwtsiIu16WoP/nHNuO3AKMAy4FLghY6XqrViuv9d8NCIiPQ54C+5PA+52zi3v9Fz/0V6D13w0IiI9DfjFZvYEPuD/YmbFQP9r6E7X4NVEIyLS47loPg/MBN53zjWa2XDg8swVq5eiaqIREUnraQ3+GODvzrkaM7sE+BegNnPF6qVo3N/rZCcRkR4H/C1Ao5nNAL4OvAf8NmOl6i11soqItOtpwCeCi2ifDfzMOfdzoDhzxeqldBONavAiIj1ug68zs2/jh0fOM7MIEM9csXopFoyiUQ1eRKTHNfj5QAt+PPxG/EW0/ztjpeot1eBFRNr1KOCDUL8HGGJmZwDNzrl+2AafHgevgBcR6elUBRcCrwIXABcCr5jZ+ZksWK9E1UQjIpLW0zb4fwaOdM5VAZhZKfAUsCBTBesVNdGIiLTraRt8JB3ugS178dq+o05WEZF2Pa3BP25mfwHuDR7PBx7NTJH2QVRTFYiIpPUo4J1z/2RmnwSODZ66zTm3MHPF6qWYJhsTEUnraQ0e59wDwAMZLMu+01w0IiLtdhvwZlYHuO4WAc45V5KRUvVWTJ2sIiJpuw1451z/m45gdyJRsIhq8CIi9MeRMPsqqgtvi4hAGAM+lgMJNdGIiIQv4KO5aoMXESGMAR9TwIuIQBgDPpqjTlYRETIY8GZ2gJk9Y2Zvm9lyM/tKpvbVRTRHnawiIuzFiU69kAC+7px73cyKgcVm9qRz7u0M7lOdrCIigYzV4J1zG5xzrwd/1wErgHGZ2l87DZMUEQH6qA3ezMqBWcAr3Sy70swWmdmi6urqfd9ZLFdz0YiI0AcBb2ZF+Dlsvuqc277jcufcbc65CudcRWlp6b7vUJ2sIiJAhgPezOL4cL/HOfdgJvfVLqYmGhERyOwoGgNuB1Y4527K1H52Eo2rk1VEhMzW4I8FLgU+ZmZvBrfTMrg/T52sIiJABodJOudexE8r3Lc0TFJEBAjlmayaqkBEBEIQ8IlkilNvfp5bnn3PP6G5aEREgBAEfCwaoaE1wfL1tf4JDZMUEQFCEPAAh5UVs2pTvX+QHibpurvSoIjI4BGKgD+0rJj3N9fTlkz5YZKgs1lFZNALRcBPKiuiLelYvbnBd7KChkqKyKAXkoD31wZ/Z1O9b6IB1eBFZNALRcAfXFpExODvm+p8Jyuoo1VEBr1QBHxePMqBIwpZtamuUw1eAS8ig1soAh58O/w7XWrwGgsvIoNbiAK+mNVbGmmzYPYF1eBFZJALTcAfWlZMMuXY0Bi8pZb67BZIRCTLQhPwh6VH0rSO8E9sW529woiI9AOhCfiJIwuJRYwldSVgEdj6fraLJCKSVaEJ+JxYhPKRhaysboGhE2Dre9kukohIVoUm4CE9J00dDD8YtijgRWRwC1XAH1pWxJqtjSSGToStH2jCMREZ1EIV8JPKinEOqnPGQUstNG7JdpFERLImdAEP8H5qtH9CzTQiMoiFKuDLRxSQE43wVnMwVFIjaURkEMvYRbezIRaNcFBpIYtr4mBRjaQRkUEtVDV48M00K6qa/FDJ7ppoXrsdNr7V9wUTEeljIQz4Iiq3NZEYdtDONfiGLfDnr8FLP89O4URE+lDoAv6w0SUAVMfH7jxU8sO/+fsNS7JQMhGRvhW6gD/2kBEU5kR5dftwaNkODZs7Fq7+P39fvRJaG7NTQBGRPhK6gC/IifGJaWN4bH2Bf6JzM82aF/01W10Kqt7OTgFFRPpI6AIe4JOzx7OydaR/kB4q2bQNNi6D6Rf6xxvezE7hRET6SCgD/uiJw0mVTCBJpGMkzZqXAAczLoL8YWqHF5HQC2XARyLG2XMOZG2qlOZN7/gn1/yfb54ZVwFjZijgRST0QhnwAOfNHs9qN5q69UHAr34RxldAPM8HfNUKXbdVREItYwFvZneYWZWZLcvUPnZn4shCGooOpKB+Da6pBjYuhQOP9QvHzIBkqx9NIyISUpmswf8GODWD29+jUeVHUEgTlS8t8CNnytMBP9Pfq5lGREIsYwHvnHse2Jqp7ffEEVNn+bIsvgsicRh/lF8wbCLkFCvgRSTUQtsGD1A4+lAAJjQspXX0TMgJxsZHIjBmugJeREIt6wFvZlea2SIzW1RdXb1/Nz70QFzET5j5XMukrsvGzPCTjqWS+3efIiL9RNYD3jl3m3OuwjlXUVpaun83Ho1hQw8E4O4N43lxVadpC8bMgEQTbF61f/cpItJPZD3gM274QTiLUjV0Jt99eBnNbUGNfcwMf69mGhEJqUwOk7wXeAk4zMwqzezzmdrXbs26BPvotXznnCP5YHMDtz4XnNk64lCI5ff/gF/5Z9i2OtulEJEBKJOjaD7lnBvjnIs758Y7527P1L52a8o5cNJ3OW5SKWfOGMsvnn2PDzY3QDQGo6d2DfiqFf3rYiAblsJ9n4bn/ivbJRGRASj8TTSdfPf0yeTGIvzjva/T1JoMOlqXwtsPw52nwy/mwh2nQlPN3m+8amXXqYn3h6d/6O8/fGn/bldEBoVBFfCjSvK4ef5Mlq/fzjf+uAQ3erqfM/7+z0Dth/CRa6C1HhbdsfOLm2vhbz+DRMvOy5q2wW3Hw//Mhtfv7nqRkd5a/SK8+yQMP9jPiFm3ad+3KSKDyqAKeICTJpdx3amH8+e3NnBb1REw53K46PdwzZtwyr/BQSfAK7/cOcif+gE88c+w5L6dN7rsQUg0++vAPvJl+O1Z3V8Ptqecg6e+D8Vj4cyf+OfWvtz77YnIoDToAh7gyuMO4rzZ4/iP56p4rPxbcPjpEIn6hR+5Buo3wlt/7HjBhiWw+E7/d/q+syX3wqgj4Mrn4YybYf2bcMuxUP1O7wr490eh8jU44To44GjfGbxGzTQisncGZcCbGf9+7jRmTxjK1+5fwl9Xdmr+OPhjUDYN/vY/kEr52vSj34T84XDCd2D9Gz7A0zav8mE841P+DNmKy+Gq//Nz37xyS/cF2PIetNR3vyyV9G3vIw6FmRdDLMfPgql2eBHZS4My4AHy4lF+eWkFB5UW8vm7FvGzv67COQdm8JF/9DNNvvskLL3fN4+c/D04+kqI5XWtxS+5DyzScaUo8E010y7wy3bssK1ZC784Bu4+p/v2/Dd+5/d90nf9SB+ACXN9Z3BL3f7/IEQktAZtwAOUFuey4Esf4ewZY7nxiXe46nevU9+SgKnnQcl4eP6/4cl/hbGzYeYl/kpQU86Dtxb4sE2lYOkffK2/eHTXjR99JbQ1wpv3dH3+2RvAJX2t//Fvd132wfPw6D/BhI/A5LM6np8w1/8iqFyUmQ9CREJpUAc8QH5OlB/Pn8m/nD6ZJ97eyFk/e5HFlfUw9yofwvUb4bQbffML+CaY1nrfRr/6Bahd65tndjRmBhwwF169rWO+m+q/w5Lfw1Ff9G39i26HN4IDwLrX4d5PwfCD4KJ7/C+JtPFH+V8JH6qjVUR6btAHPPg2+SvmHcTvrjialrYU59/6N/6r+mhc/giYcxmMn9Ox8vgjYdQUWHSn71zNHeI7abtz9JX+LNRVT/rHf/03iBfAvK/BSd+DicfBn66FpX+E330SCobDpQv9fWd5JVA2dfft8M7B8od01quItFPAd/KRg0fyl2uP4+KjJ/CLl6o4w37Kswd/y7fNp5n5WvzGpb4WP+UciOd3v8HJZ0HxGHj1l7BuMaz4X9++XzjSt6+ffycUlsKDV0AkBpc+BCVjut/WhGN8E02ybedlqRQ8fh388bN+TL9myBQRFPA7KcqNcf0507j3C3Opt0Iu++0bnHfL33hhVXVH0E+/0NfEU4num2fSonGo+By891d45BooGAHHXN2xvHAkzL8bJh4Plz4IIw7e9bYmzIW2hp2nUki2wcIvwiu3Qvk8P6Tzjbt7/wGISGgo4HfhmINH8OS1x/Pv505jU20zl97+Khfc+hIPvl5JgxXC7M/44ZQT5u5+Q3Mug2gObFoG874BucVdl4+bDZ99BEZP2/120vvp3A7f2ujnqnnrfjjpX+Gz/+s7aJ/+oT+7trNUqvtRO3vrrQXw64/DpuX7vi0RySgF/G7kxCJ8+ugJPPNPJ/BvZ09hU10zX7t/CRXXP8W1tRfx/MceILmnWQmKRvla/rCJvjbfWyVjYeiBHe3wH7wAt53g2/fPuBnmfd03H33iP324P3tDx2tr1sLtJ8PN03s/mVpLHSy8Ch74vO98/v18qK/q/fsRkYwztz/mTdlPKioq3KJF/XcooHOORWu28eDr6/jz0vVsb04wdkge588Zz/lzDmDCiILuX5hM+OaceN6+FeDBL8K7T8EhJ/nhmUMPhDNugkNO7rren74Gi38DX3oRGqpgwecg0Qq5Rb7W/+k/wIHHdKzf2uAPHAUj/Rj+/GH+YJFK+gnUqlf4bW77wP8KmfQP8Jsz/GUPP/PIvr8vEek1M1vsnKvodpkCvnea25I8vaKK+xet5flV1TgHR5UP5+xZYzl92hiGFuTs/50uuhP+9FV/AfFjv+Jr7TndHFQat8JPZ/nRN7WVMHISzL8HYrlw97l+aOeFv4VRk+HVX8Hrv4XmTidk5RT77TZU+/H3ACXj4LzboPyj/vHyh3yn7vSL4Nxbuw7r7KxhCxSO2L+fQ3dSqY6hrCKDiAI+w9bXNPHg65U89OZ63q2qJx41jp9UyrxDS5l70AgOHVVEJLKLANwbzbXw4o9hxqehdNLu133t1/Dnr/sTs876H197B18jv+d8P9c8DjCYfAbMutRPmFbzob+1NviTt4rK/G3icZA/tOs+nvtveOZ6OO6bft6c9Hw+AG1N/qStN+6Gw06Dj/8QRh66+zKnzyTuzrIH/C+W8Tt8j7evh4Vf8tM/nPkTOPTk7l8vElIK+D7inGP5+u08/OY6Hn1rI+tqmgAYXpjD0ROHM/egERxzsA9821WQ7b/CwOZ3fO19x3211Pn5dYpGwZFXwNADer+PhV+CpffBmJnwif+CCUf76Y3v/4xv7z/iHHj3aX9Wb8XlcPx1ULTDtXdb6uGZH/mpls+8Gaad33X5337mZ/IEmD4fTv6+75NY+Wd4+Grf/FQyBra86zu/T/mR//XStM33VWx9D2Z9pm9+SYj0MQV8lqzd2sjL72/hpfe38Mr7W9sDf2RRDtPHD+XQsiIOKytmUlkxh4wqIi8e3cMW+yHn/MiaJ78LdRvg8DN8qJr5Jp1J/wD11fDcf/p59iOx4BfDJTDxBFj1hP+lsX0dDDsQtq2Bs3/mlwO8eS889CV/TsHISX4SuEjU/6J453F/xvAn74Ah4+HZ/4C//dQ3JxWN8hPDdW5iuuA3cMBR2fqkRDJCAd8POOeo3NbES+9t4eX3t/D2hu28V11PWzAMJxoxDi4t5PDRJUwZW8KMA4YybdwQCnNjWS55D7XUw4s3+QAumwIX3OUDu7PNq/zUDUvv923+BSOgcQuUToazfurP1v3Dxf68gdNuhCEH+GGg5R+Fi//o+xC2rYYnvgsrHoFjvuyHh8ZyO/ax9jV4/Fv+QHLQiXDwib7P4oHP+f6Ij/8Q5v6/XTcFiQwwCvh+qi2ZYs2WBlZurGPlhjpWbtzOig117TX9iMGksmIOG13MgSMKKR9RQPnIQo4YU9J/a/uNWyG3pGMmzO60Nfs575cvhLGzfFDHcjqW/fEyeOcxH8yjp/rx/TueP9BSt/Nzu9NU45tzVv4Jpp7vf11E+ulnKLIXFPADzNaGVpasreGNtTUsWVvDe9X1rK9pIhX8U8UixhFjS5g9YRiHjS5mRGEOw4NbWUnewKn170qi1V8Zq2qFn5uncOT+2a5z8MKN8Nfr4aPX+rZ8kQFOAR8CLYkklduaeLeqniVra3j9w20sraylsXXneWeG5McZMySPcUPzKRuSR1lxHqOH5FJWkseYIfmMHpJHSV4s8x29/ZFzfoK3xXfCeb/qOo+/yAC0u4Af4FW9wSM3FuXg0iIOLi3iH6b4uecTyRQbtzezraGNrY2tbG1oYWNtCxtqm1hf08S6mmbeWFvD1obWnbZXkBOlfEQhk8qKOLSsmENHFXHA8ALGDcunJC/e12+v75j50T6bV8HDX/YXNe88W2haawO8/xzUb4LR032/QjzPn/y1YYmfu796pe8fOPyMnYeQivQDqsEPAi2JJFXbW9i4vZmNtc1s2t7M+ppm3t9czzsb61hf29xl/ZK8GCOLc4lHIsSiRjwaYXRJHoeMKuKQUf4gU1qcy7DCOLmxAdqO3bAFfnWCbw76xA1+tE2yzXf6vvs0rH4Rkp3m7rGoH8WzfT201Prn8of5oZjRHDjk4/7M3q0f+GGi2z7wZwaPnwPj5vhhpIUjff9Ebok/s7l2rV9v2xq//9xiyCn0Vw1ra/JDS1vrAes4H6FolD9ItTX5g1Aq6c8+Tj8P/qSvLe/6GU+TrZBT5M+DiOX717TUQvN2/37jef75WK7fZtNW34/SUueHmuYP953hucW+zyIS9Z9FLM+/Nl7g/84pDP7O9b+SmrZB42b/eWJ+/zlFfp1kS8f7SyX9pHzRHN/n0n6ymgHOv5dUAlJt/jOyyA63qH/fkZi/ReMdf0eiHeul/31TwVnlFvX7isQ6ljvn99nlnk7b67xuqqM80XiwH/PlTbb695hK+lt63UjM9zVFc/37damO8riU/7x7QU00slt1zW28V91A5bZG1m1rYl1NE1saWkkkUySSjtZkinXbmliztZFkquv3pSg3RlFurMuglNFD8jh8dDGHjy7h0FFFFOXFyItHyY9HKcmLU5LfT5qHNi2H208JQrST4QfDpFNh0ik+PDcu87X2jW/5k78mHudn7iwa5S/UsuwBWP6gHyZaPNbPCjqs3Nf+1y0OQq6z9Hvfj//3cofAyEN8cGx8a+f3tFfMh3FrPXtdRgsCOj08dTCxqL9aW28UlcE33undbhXwsj+0JJKs2dLI+9UNbGloYWt9K1sbW2loSbSvk3JQua2RlRvrqGnsZu56ID8eZcyQPMYMzaMkL05uLEJuLEpuPEJ+PEp+TpSCnCjFeXHKSnIZVZACigAAAAtBSURBVJzHqJJchhXkEI/u5+kIGjb7YI7EfU0sp3Dnyy/2RLrmtuO8PM5BzRp/kGja5s9Gbtnulw0r97ehB/p9t9b7GnZbk7/GQLzAB61L+ond6qv8QQMXLCv0gbpttT+pbfMqfzbymBkdt5zCoNZeD4mmoDZfHIx0yvHrJ5qDfRb4i83kDfG131TSjz5q3AKtdR21aZf0M5O2NXXUxNua/HTWbU3+PReW+l8sBcP949YG//7aGn0NNv3+IjFfO0+2+hp2e006kK6Jp2vPuKDmm+xY1yU7asKda+npmnMq2VHTjsT99pzreC/p5WaAdRyk2n8RJbtus/3Xg3VsP708mhP8Isnd4VdEMLdTosXX7pNtwa+I4L3lFvV6MkIFvPQ55xxVdS28V11PY0uS5kSS5rYUNY2tbKxtZkNtMxtqm6hvSdCSSNHSlqI5kaSpNUlLYte1v8KcKEPy45Tk+wNDPBrcYhFyopHgYBFhWGGOP4gMyWf0EH9wGFaQQ0l+nOj+mDZCpJ9QJ6v0OTOjrCSPspK9n2kymXI0tSWpbWqjanszm7a3UFXnO5O3N7dR29TG9qY22pIpWpMp2hKOxqY2WhMpWhP+ALG5voXmtp0PFGYwaVQxXztlEqccUdY/mopEMkQBL/1ONGLtbfvjhu7icoh74JyjtqmNDbXNbNzeTE1jKzWNbWxraOXPb23gi3cv5sjyYXz7tMnMnjBsP78Dkf5BTTQy6CSSKf6waC0/fnIVm+tbOHx0MVPGDmHauBIOG11CTixo6wXi0QjDCvxJZAU5UdX4pd9RG7xINxpaEtz98hpefn8Ly9bVsrl+5/MFOsuJRSjJi1Oc539dFOREiUaMiBlmkBONUJIfpyQvRkl+nFEleYwfls/4ofmMHZqvA4RkRNYC3sxOBX4CRIFfO+du2N36CnjJFuccm7a3sKqqrn0oqJnR0pakptGfSLatoZXtzQnqWxI0tPh75xwpBynnaGlLUdfSxvamBHXNbewwopRYxCgMmp7yc6JEgwNDxIycWIS8eIS8eJS8WJScoAM5JxYhGvH9EomkI+kchhGLGNFocB/x97FohFhwwPE3Oq0TIWJ+/iPfV5HCQfvw1fzgYGX48kQiBAcuv51YJEJBMLopPydKTjSCmQUHON+slr4ZRjLly5pMOsz8L6FY1IjveFGW4MAYjwavNevymabLY0b7Muc6Bm9Ggud7KplytCVTRDqVfaAfdLPSyWpmUeDnwMeBSuA1M3vEOfd2pvYp0ltmxugheYwesn8uP5hKOarrW6jc1kTltkY21DZT19xGfXOCupYEzW1JP7LSOVIpf65BS1uKrQ2tNLclaU2kaEs6WhIpUs61B3kkCKNkypFIORKpFMlkx9+JlKOndTYzerxuX0jnbG/KFLH0gcna/zb8v6sBbSn/ee54Hkf6td2FfPrgkj6ARqP+808F/2YpR7AP2v9tUs7vI30QsmBDBu0jvvzB24KDjT/gDC2I88S1x+/9G9+DTHayHgW865x7H8DM7gPOBhTwEnqRSMcoojkH9m0nbroGnEy59sBJpHwopYeTxqM+0FqTKZpbUzS2JUgEU1c75w886e045w9ATa1JGluTNLYmSKQ6gqy9tt7+nCMa8b88ImY45wM2HWidozTlfNnaEinakn7UU/qXgbWv49dzzvnANkgvdQS1/eC9ptdNpRwueC8OF4SrkRONEo/5MqV/EaW6CX2Hf2/p7SWS/gCaci745dVxsPX79beOX0/WfgBNBUestmSq/RdUW9IRixqxSIScmFGSn5npQTIZ8OOAtZ0eVwJH77iSmV0JXAkwYcKEDBZHZHAwM6JBrXJPcmNRcmNRhhDi+YcGsaxfpdg5d5tzrsI5V1FaWrrnF4iISI9kMuDXAZ0v9jk+eE5ERPpAJgP+NeBQM5toZjnARcAjGdyfiIh0krE2eOdcwsy+DPwFP0zyDufc8kztT0REusroVAXOuUeBRzO5DxER6V7WO1lFRCQzFPAiIiGlgBcRCal+NdmYmVUDa3r58pHA5v1YnDDSZ7Rn+ox6Rp/TnvXVZ3Sgc67bk4j6VcDvCzNbtKsJd8TTZ7Rn+ox6Rp/TnvWHz0hNNCIiIaWAFxEJqTAF/G3ZLsAAoM9oz/QZ9Yw+pz3L+mcUmjZ4ERHpKkw1eBER6UQBLyISUgM+4M3sVDP7u5m9a2bXZbs8/YWZHWBmz5jZ22a23My+Ejw/3MyeNLNVwX3fXm6oHzKzqJm9YWZ/Ch5PNLNXgu/UH4LZUActMxtqZgvMbKWZrTCzY/Q92pmZXRv8X1tmZveaWV62v0sDOuA7Xff1E8ARwKfM7IjslqrfSABfd84dAcwFrg4+m+uAp51zhwJPB48Hu68AKzo9/k/gx865Q4BtwOezUqr+4yfA4865w4EZ+M9K36NOzGwccA1Q4Zybip9B9yKy/F0a0AFPp+u+OudagfR1Xwc959wG59zrwd91+P+U4/Cfz13BancB52SnhP2DmY0HTgd+HTw24GPAgmCVQf0ZmdkQ4DjgdgDnXKtzrgZ9j7oTA/LNLAYUABvI8ndpoAd8d9d9HZelsvRbZlYOzAJeAcqccxuCRRuBsiwVq7+4GfgmkAoejwBqnHOJ4PFg/05NBKqBO4NmrF+bWSH6HnXhnFsH3Ah8iA/2WmAxWf4uDfSAlz0wsyLgAeCrzrntnZc5P0Z20I6TNbMzgCrn3OJsl6UfiwGzgVucc7OABnZojhns3yOAoA/ibPwBcSxQCJya1UIx8ANe133dDTOL48P9Hufcg8HTm8xsTLB8DFCVrfL1A8cCZ5nZanzz3sfw7c1Dg5/ZoO9UJVDpnHsleLwAH/j6HnV1MvCBc67aOdcGPIj/fmX1uzTQA17Xfd2FoC35dmCFc+6mToseAT4b/P1Z4OG+Llt/4Zz7tnNuvHOuHP/d+atz7mLgGeD8YLXB/hltBNaa2WHBUycBb6Pv0Y4+BOaaWUHwfy/9OWX1uzTgz2Q1s9Pw7ajp677+KMtF6hfM7KPAC8BbdLQvfwffDn8/MAE/NfOFzrmtWSlkP2JmJwDfcM6dYWYH4Wv0w4E3gEuccy3ZLF82mdlMfCd0DvA+cDm+cqjvUSdm9gNgPn4E2xvAFfg296x9lwZ8wIuISPcGehONiIjsggJeRCSkFPAiIiGlgBcRCSkFvIhISCngRfaBmZ2QnoVSpL9RwIuIhJQCXgYFM7vEzF41szfN7JfBHPD1ZvbjYA7vp82sNFh3ppm9bGZLzWxheq5zMzvEzJ4ysyVm9rqZHRxsvqjTfOn3BGcyYmY3BPPxLzWzG7P01mUQU8BL6JnZZPwZhsc652YCSeBi/IRQi5xzU4DngO8FL/kt8C3n3HT8mcDp5+8Bfu6cmwF8BD9rIPiZOr+KvybBQcCxZjYCOBeYEmzn+sy+S5GdKeBlMDgJmAO8ZmZvBo8Pwk/h8Idgnd8BHw3mPx/qnHsueP4u4DgzKwbGOecWAjjnmp1zjcE6rzrnKp1zKeBNoBw/XWwzcLuZnQek1xXpMwp4GQwMuMs5NzO4Heac+3436/V23o7Oc4skgVgwB/hR+NkXzwAe7+W2RXpNAS+DwdPA+WY2CtqvS3sg/vufnunv08CLzrlaYJuZzQuevxR4LrgqVqWZnRNsI9fMCna1w2Ae/iHOuUeBa/GXuhPpU7E9ryIysDnn3jazfwGeMLMI0AZcjb94xVHBsip8Oz34aV1vDQI8PXsi+LD/pZn9MNjGBbvZbTHwsJnl4X9BfG0/vy2RPdJskjJomVm9c64o2+UQyRQ10YiIhJRq8CIiIaUavIhISCngRURCSgEvIhJSCngRkZBSwIuIhNT/B2uk9KZwOdQTAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rwuQwqyRSL-P",
        "colab_type": "code",
        "outputId": "3d483ab6-a244-4f46-8f25-e6a3d67d9bad",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "history.history\n"
      ],
      "execution_count": 47,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{'loss': [1.7948238849639893,\n",
              "  1.251184344291687,\n",
              "  1.0024349689483643,\n",
              "  0.8530992865562439,\n",
              "  0.7419097423553467,\n",
              "  0.6681743264198303,\n",
              "  0.6076078414916992,\n",
              "  0.5609065890312195,\n",
              "  0.5274993777275085,\n",
              "  0.4923802316188812,\n",
              "  0.45968708395957947,\n",
              "  0.43671542406082153,\n",
              "  0.4133875072002411,\n",
              "  0.3976765275001526,\n",
              "  0.38098546862602234,\n",
              "  0.3612830936908722,\n",
              "  0.3483625054359436,\n",
              "  0.32813793420791626,\n",
              "  0.32082465291023254,\n",
              "  0.3101036548614502,\n",
              "  0.3005317151546478,\n",
              "  0.29052847623825073,\n",
              "  0.2750489115715027,\n",
              "  0.26378265023231506,\n",
              "  0.2619289755821228,\n",
              "  0.24709081649780273,\n",
              "  0.23966281116008759,\n",
              "  0.2396802008152008,\n",
              "  0.22335579991340637,\n",
              "  0.22002415359020233,\n",
              "  0.20970802009105682,\n",
              "  0.20682726800441742,\n",
              "  0.2029421627521515,\n",
              "  0.1936953067779541,\n",
              "  0.18765123188495636,\n",
              "  0.18538694083690643,\n",
              "  0.18282248079776764,\n",
              "  0.17262010276317596,\n",
              "  0.16600288450717926,\n",
              "  0.11546418070793152,\n",
              "  0.09736111015081406,\n",
              "  0.0975596085190773,\n",
              "  0.09037276357412338,\n",
              "  0.08549651503562927,\n",
              "  0.08483445644378662,\n",
              "  0.07906839996576309,\n",
              "  0.067699134349823,\n",
              "  0.06271541863679886,\n",
              "  0.061857543885707855,\n",
              "  0.05857355147600174,\n",
              "  0.056269366294145584,\n",
              "  0.05764111503958702,\n",
              "  0.05624964460730553,\n",
              "  0.05455992370843887,\n",
              "  0.053730059415102005,\n",
              "  0.05228002369403839,\n",
              "  0.05488310381770134,\n",
              "  0.051200807094573975,\n",
              "  0.05077233910560608,\n",
              "  0.050010938197374344,\n",
              "  0.04599267244338989,\n",
              "  0.04502784088253975,\n",
              "  0.04380165413022041,\n",
              "  0.0450194776058197,\n",
              "  0.04333089292049408,\n",
              "  0.043428461998701096,\n",
              "  0.04133119061589241,\n",
              "  0.04224342107772827,\n",
              "  0.04154699668288231,\n",
              "  0.04207632690668106,\n",
              "  0.04140586033463478,\n",
              "  0.04050324857234955,\n",
              "  0.040187906473875046,\n",
              "  0.04265298694372177,\n",
              "  0.04136010631918907,\n",
              "  0.04133142903447151,\n",
              "  0.04102753847837448,\n",
              "  0.03952191770076752,\n",
              "  0.040392231196165085,\n",
              "  0.03951433673501015,\n",
              "  0.040376175194978714,\n",
              "  0.039941221475601196,\n",
              "  0.0375625379383564,\n",
              "  0.03947163000702858],\n",
              " 'lr': [0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.001,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.0003162278,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  0.000100000005,\n",
              "  3.1622778e-05,\n",
              "  3.1622778e-05,\n",
              "  3.1622778e-05,\n",
              "  3.1622778e-05,\n",
              "  3.1622778e-05,\n",
              "  3.1622778e-05,\n",
              "  1.0000001e-05,\n",
              "  1.0000001e-05,\n",
              "  1.0000001e-05,\n",
              "  1.0000001e-05,\n",
              "  1.0000001e-05,\n",
              "  1.0000001e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05,\n",
              "  1e-05],\n",
              " 'sparse_categorical_accuracy': [0.42254000902175903,\n",
              "  0.5906000137329102,\n",
              "  0.6693599820137024,\n",
              "  0.718280017375946,\n",
              "  0.7525799870491028,\n",
              "  0.7799800038337708,\n",
              "  0.7972999811172485,\n",
              "  0.8138800263404846,\n",
              "  0.8235399723052979,\n",
              "  0.8356800079345703,\n",
              "  0.8467400074005127,\n",
              "  0.8548600077629089,\n",
              "  0.8620399832725525,\n",
              "  0.8675400018692017,\n",
              "  0.8729599714279175,\n",
              "  0.8797799944877625,\n",
              "  0.8855999708175659,\n",
              "  0.8916000127792358,\n",
              "  0.8935400247573853,\n",
              "  0.8978599905967712,\n",
              "  0.9012200236320496,\n",
              "  0.9045000076293945,\n",
              "  0.910099983215332,\n",
              "  0.9131600260734558,\n",
              "  0.9129999876022339,\n",
              "  0.919439971446991,\n",
              "  0.9218199849128723,\n",
              "  0.9218400120735168,\n",
              "  0.9265400171279907,\n",
              "  0.9279199838638306,\n",
              "  0.9322400093078613,\n",
              "  0.9334999918937683,\n",
              "  0.934440016746521,\n",
              "  0.9375,\n",
              "  0.9388200044631958,\n",
              "  0.940280020236969,\n",
              "  0.9409199953079224,\n",
              "  0.9455000162124634,\n",
              "  0.9470199942588806,\n",
              "  0.9651399850845337,\n",
              "  0.9712600111961365,\n",
              "  0.9708799719810486,\n",
              "  0.9726399779319763,\n",
              "  0.9747800230979919,\n",
              "  0.9754800200462341,\n",
              "  0.9773399829864502,\n",
              "  0.9814199805259705,\n",
              "  0.9831600189208984,\n",
              "  0.9832599759101868,\n",
              "  0.9847599864006042,\n",
              "  0.9856600165367126,\n",
              "  0.9850599765777588,\n",
              "  0.9851400256156921,\n",
              "  0.9856799840927124,\n",
              "  0.9857400059700012,\n",
              "  0.9864000082015991,\n",
              "  0.9850800037384033,\n",
              "  0.9872000217437744,\n",
              "  0.9871600270271301,\n",
              "  0.9870399832725525,\n",
              "  0.9886999726295471,\n",
              "  0.9884799718856812,\n",
              "  0.9896600246429443,\n",
              "  0.9890999794006348,\n",
              "  0.9889199733734131,\n",
              "  0.9894999861717224,\n",
              "  0.9904400110244751,\n",
              "  0.9898800253868103,\n",
              "  0.989799976348877,\n",
              "  0.9897000193595886,\n",
              "  0.9901400208473206,\n",
              "  0.990559995174408,\n",
              "  0.9905999898910522,\n",
              "  0.9896199703216553,\n",
              "  0.9895600080490112,\n",
              "  0.9904199838638306,\n",
              "  0.9901800155639648,\n",
              "  0.9907400012016296,\n",
              "  0.9906399846076965,\n",
              "  0.9908599853515625,\n",
              "  0.9906399846076965,\n",
              "  0.9904199838638306,\n",
              "  0.9916800260543823,\n",
              "  0.9909399747848511],\n",
              " 'val_loss': [4.997781276702881,\n",
              "  1.5547903776168823,\n",
              "  0.9127108454704285,\n",
              "  1.286782145500183,\n",
              "  0.8149581551551819,\n",
              "  0.8540629744529724,\n",
              "  0.6525865197181702,\n",
              "  0.8081645369529724,\n",
              "  0.5793571472167969,\n",
              "  0.8279461860656738,\n",
              "  0.7690314054489136,\n",
              "  0.5530761480331421,\n",
              "  0.7271094918251038,\n",
              "  0.610148549079895,\n",
              "  0.7092474699020386,\n",
              "  0.8820326924324036,\n",
              "  0.4901011288166046,\n",
              "  0.5464097857475281,\n",
              "  0.6311942338943481,\n",
              "  0.47425606846809387,\n",
              "  0.546238124370575,\n",
              "  0.4615757465362549,\n",
              "  0.5013877153396606,\n",
              "  0.4898809492588043,\n",
              "  0.49874424934387207,\n",
              "  0.5653690099716187,\n",
              "  0.4552795886993408,\n",
              "  0.40160053968429565,\n",
              "  0.4721849262714386,\n",
              "  0.42114922404289246,\n",
              "  0.38591915369033813,\n",
              "  0.44406870007514954,\n",
              "  0.3553990423679352,\n",
              "  0.45581328868865967,\n",
              "  0.402620792388916,\n",
              "  0.46927139163017273,\n",
              "  0.4073677361011505,\n",
              "  0.4320192039012909,\n",
              "  0.36186036467552185,\n",
              "  0.2500638961791992,\n",
              "  0.25199803709983826,\n",
              "  0.2790989279747009,\n",
              "  0.261068195104599,\n",
              "  0.28474894165992737,\n",
              "  0.2530798614025116,\n",
              "  0.2664196491241455,\n",
              "  0.24693088233470917,\n",
              "  0.2413826882839203,\n",
              "  0.2535300552845001,\n",
              "  0.24925798177719116,\n",
              "  0.2533564269542694,\n",
              "  0.24466046690940857,\n",
              "  0.24848628044128418,\n",
              "  0.23421694338321686,\n",
              "  0.25247615575790405,\n",
              "  0.24791516363620758,\n",
              "  0.25325658917427063,\n",
              "  0.25009652972221375,\n",
              "  0.25696849822998047,\n",
              "  0.24996702373027802,\n",
              "  0.2487545907497406,\n",
              "  0.24532289803028107,\n",
              "  0.24144870042800903,\n",
              "  0.24904432892799377,\n",
              "  0.24447402358055115,\n",
              "  0.2479495108127594,\n",
              "  0.245879128575325,\n",
              "  0.24570129811763763,\n",
              "  0.24726064503192902,\n",
              "  0.2465633600950241,\n",
              "  0.2456590086221695,\n",
              "  0.24383759498596191,\n",
              "  0.24295836687088013,\n",
              "  0.2447112500667572,\n",
              "  0.2434820830821991,\n",
              "  0.24397695064544678,\n",
              "  0.24420763552188873,\n",
              "  0.24275414645671844,\n",
              "  0.2434774935245514,\n",
              "  0.24186784029006958,\n",
              "  0.24420258402824402,\n",
              "  0.245050311088562,\n",
              "  0.24248196184635162,\n",
              "  0.2438969910144806],\n",
              " 'val_sparse_categorical_accuracy': [0.10220000147819519,\n",
              "  0.49959999322891235,\n",
              "  0.7093999981880188,\n",
              "  0.6263999938964844,\n",
              "  0.7394999861717224,\n",
              "  0.7376000285148621,\n",
              "  0.7861999869346619,\n",
              "  0.7512999773025513,\n",
              "  0.814300000667572,\n",
              "  0.7634999752044678,\n",
              "  0.777899980545044,\n",
              "  0.8147000074386597,\n",
              "  0.7803999781608582,\n",
              "  0.8077999949455261,\n",
              "  0.7865999937057495,\n",
              "  0.7462999820709229,\n",
              "  0.8475000262260437,\n",
              "  0.828499972820282,\n",
              "  0.8127999901771545,\n",
              "  0.8521999716758728,\n",
              "  0.833299994468689,\n",
              "  0.8555999994277954,\n",
              "  0.843999981880188,\n",
              "  0.847599983215332,\n",
              "  0.8537999987602234,\n",
              "  0.8395000100135803,\n",
              "  0.8640999794006348,\n",
              "  0.8826000094413757,\n",
              "  0.8603000044822693,\n",
              "  0.8687000274658203,\n",
              "  0.8848999738693237,\n",
              "  0.8695999979972839,\n",
              "  0.892799973487854,\n",
              "  0.8694000244140625,\n",
              "  0.8838000297546387,\n",
              "  0.8626000285148621,\n",
              "  0.8810999989509583,\n",
              "  0.8779000043869019,\n",
              "  0.8948000073432922,\n",
              "  0.9257000088691711,\n",
              "  0.9271000027656555,\n",
              "  0.9197999835014343,\n",
              "  0.9261999726295471,\n",
              "  0.921500027179718,\n",
              "  0.9275000095367432,\n",
              "  0.9230999946594238,\n",
              "  0.9319000244140625,\n",
              "  0.9337000250816345,\n",
              "  0.930899977684021,\n",
              "  0.9320999979972839,\n",
              "  0.9291999936103821,\n",
              "  0.9329000115394592,\n",
              "  0.9330000281333923,\n",
              "  0.9351000189781189,\n",
              "  0.9322999715805054,\n",
              "  0.9329000115394592,\n",
              "  0.9330000281333923,\n",
              "  0.9301999807357788,\n",
              "  0.9316999912261963,\n",
              "  0.9323999881744385,\n",
              "  0.9330999851226807,\n",
              "  0.9344000220298767,\n",
              "  0.9343000054359436,\n",
              "  0.9343000054359436,\n",
              "  0.9340999722480774,\n",
              "  0.9341999888420105,\n",
              "  0.9350000023841858,\n",
              "  0.9341999888420105,\n",
              "  0.9348999857902527,\n",
              "  0.9347000122070312,\n",
              "  0.9350000023841858,\n",
              "  0.9366000294685364,\n",
              "  0.9363999962806702,\n",
              "  0.9362000226974487,\n",
              "  0.9355000257492065,\n",
              "  0.9365000128746033,\n",
              "  0.9358999729156494,\n",
              "  0.9358999729156494,\n",
              "  0.9359999895095825,\n",
              "  0.9359999895095825,\n",
              "  0.9366999864578247,\n",
              "  0.9351999759674072,\n",
              "  0.9361000061035156,\n",
              "  0.9350000023841858]}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 47
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "peIkePjKSL-d",
        "colab_type": "text"
      },
      "source": [
        "## 模型评价"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VwKS059BSL-g",
        "colab_type": "code",
        "outputId": "f406ce5d-3b2a-46b0-d618-e338285009f7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 425
        }
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "model_filename = '/content/gdrive/My Drive/cifar_resnet18.h5'\n",
        "try:\n",
        "    model.load_weights(model_filename)\n",
        "    print(\"load model pass\")\n",
        "except:\n",
        "    print(\"load model fail\")\n",
        "    \n",
        "model.evaluate(x_test, y_test)\n",
        "pred = model.predict(x_test)\n",
        "pred = np.argmax(pred, axis=1)\n",
        "print(pred[:50])\n",
        "\n",
        "label_dict={0:\"airplane\", 1:\"automobile\", 2:\"bird\", 3:\"cat\",4:\"deer\",\n",
        "            5:\"dog\",6:\"frog\",7:\"horse\",8:\"ship\",9:\"truck\"}\n",
        "\n",
        "def plot_prediction(images, labels, preds, index, nums=5):\n",
        "    fig = plt.gcf()\n",
        "    fig.set_size_inches(12,6)\n",
        "    if nums > 10:\n",
        "        nums = 10\n",
        "    for i in range(nums):\n",
        "        ax = plt.subplot(2,5,i+1)\n",
        "        ax.imshow(images[index])\n",
        "        title = str(i) + label_dict[labels[index][0]]\n",
        "        if (len(preds)>0):\n",
        "            title += \"  ==>  \" + label_dict[preds[index]]\n",
        "        ax.set_title(title, fontsize=12)\n",
        "        index +=1\n",
        "    plt.show()\n",
        "plot_prediction(x_test, y_test, pred, 0 ,10)\n",
        "\n",
        "\n"
      ],
      "execution_count": 49,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "load model pass\n",
            "313/313 [==============================] - 10s 33ms/step - loss: 0.2342 - sparse_categorical_accuracy: 0.9351\n",
            "[3 8 1 0 6 6 1 6 3 1 0 9 5 7 9 6 5 7 8 6 7 0 4 9 5 2 4 0 9 6 6 5 4 5 9 2 4\n",
            " 1 9 5 4 6 5 6 0 9 3 8 7 6]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAFUCAYAAABshimNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOy9eZhlWVUnutY55873xhwZEZkZOU9VWTNUIVBACegDEUFRURSh2wl5Tt3Sij77yVP0+V7brb7PgdYHXQrK0MokoiKTxQw1UAU1ZWblPERkzMOd7zm7/zg37xpiyBuREXkzs9bv+/LLs2OfYZ+9117n3LN++7fQOQcGg8FgMBgMBoOhM/A63QCDwWAwGAwGg+HZDHshNxgMBoPBYDAYOgh7ITcYDAaDwWAwGDoIeyE3GAwGg8FgMBg6CHshNxgMBoPBYDAYOgh7ITcYDAaDwWAwGDoIeyE3PGuAiCcR8eUr1L0IEZ++2m26FoCIb0bEL65S/0+I+Kar2aZ2YWN6fQIR70fEd65Sv4iIe9rZ9zLXuSLbRcTPI+JPrff4ZzMQ8XFEvO8Kjl9xbl/LQMR3IuIkIo51ui3XChDxhYh4tDmvX9vp9lyruOZfyBGxDxE/gohFRDyFiG/YgHOu+gJyowMRdyGiQ8Sg021ZDxDx5xHxQUSsIuL9G3FO59wXnHMHN+JcNxqcc690zv3VZp0fEVOI+O7m/F5AxG8i4iuv9Lw2pqvjSl50NxvOubxz7niz+CIA+CVEnEfEI2t5Qd5s2zWsDOfcYefc5zvdjs0CIu5HxAoivo/9bQcA/AoA3OycG+5c6645/DYA/ElzXn+00425VnHNv5ADwJ8CQA0AhgDgxwDgzxHxcGebdOVAxKFOt+E6xnkAeCcAvKfTDbkaaP4oTXS6HZuIAADOAMBLAKAbAH4TAD6EiLs62KZNxbNgTDcS34L4Yd4FAN8HAO9ExOdc6Umv1w8SG4FOP39ukL7/UwD4hvrbDgCYcs5dXO6A6+2+N9BOdgLA4ytcAxHxengX3XRc052AiDkAeB0A/Gfn3KJz7osA8HEAeCPb56cR8cnml7UnEPGu5t/fjojPsL9/f/PvNwHAuwDg+c3wyezVvzMAALgfEb+OiG9BxJ71ngQR70XELyPiLCKeQcQ3N//+KkR8pPlV6QwivoMd9kDz/9lmHzx//bdx9eGc+3DzV/aUrkPEAUT8RLM/phHxC2qy34GIjyHiHCJ+EBHTzePuQ8Sz7DwnEfHXm7Yzg4j/49K+HcB3AcBZRPyviHjLek/SjAwdb86JE4j4Y6r+D5r3eoJ/oeZh++Y5voSIf9Lsw6cQ8WXrvjMAcM4VnXPvcM6ddM5FzrlPAMAJAHhO85o2pisAEf8d83/HEfFnWd2SSCDGkbF9iPgzEH/g+NWmD/iHZv1NzfGexZhy8H3s2PsR8c8wpoEsNu1gGBH/qNmfTyHinWz/Fc/VxAAi/muz7f+GiDt1O5vFWQAIm9sOAJIA8PfN836teexEsw2fQMTt7DzL2e4fIuIUALxjLfaMiHsR8bOIOIUxJeFvkPnupn29bTlbbNZ/L8bRn1mMffZtqwztZuMYIn4MEV+L6/xh2GZ/vLy5/Q5E/DtEfB8izgPAm9nfPti0gYcR8fYVrnUPIn6l2XcXmuOVZPUO42fp0eY+f4qIyOr/fXOezCDiv3BbW+e9/wjEdvkZ9reXA8C/AsDW5vy4Hyka/ZOIeBoAPouIHiL+JsYRwYuI+NeI2M3O8xPNuilE/M/YWerOOzD2l/8JEdf1xR8RnwGAPQDwD81+STXn5e8i4pcAoAQAexDxBYj4jebc+QYivoCdYzciPtC0k083x/d9K13zuoVz7pr9BwB3AkBJ/e1tAPAPze0fAoBzAHA3ACAA7AOAnaxuK8Q/Ol4PAEUAGGnWvRkAvrjGtnwC4gm43L9PrGO/BAC8FgA+AgBzAPC3ED+kvTW0aScALADAjzbP1w8AdzTr7gOAW5v3fxsAjAPAa5t1uyB+sAWdHuMrtI93AsD96m//N8Q/uBLNfy8CAGzWnQSArzftog8AngSAt7D+OsvOcxIAvg0Ao819vwQA72yzXW9YxQZmAWDHWvZr7nsLAPwXiKMD3wCAtwJA7xr6KgcA8wBwsFkeAYDDbD7UAeCnAcAHgJ9rXudSv30eAH6K7dsAgP/Q7N/XN+23bwPHdQgAKgBwyMb0su16FQDshdj/vQTih9tdbKy+qPZ3ALCvuX0/v/9m3x4DgN+A+KX3pRD7l4Ns/0mIfyilAeCzEP9w+omm3bwTAD63hnMtAMCLASAFAH/M27pMOx9s3puD2Fbva17zrQBwEQB6AKAAAP8TAD7KzvN5WGq7vwBxVCYDl7Fndfw+iH10CgAGIf6w8UfKvlayxTub7Xxes91vau6fanOcV7Opt69jvx4AeAsAfAXiZ8N/A4Bb12h77fTHy5vb72iO22shfiZl2N9+sNn3b4PYnhLLHP8cAPiO5rjtavbtLyt7+UTzvnYAwAQAvKJZ9xqIbfGm5vG/CQBfvgL/1AUARwBge/Me3sfq7gPpc3Y12/bXEPvgDAD8+2Z79gBAHgA+DADvbe5/MwAsAsC9EM+bP2j20cvbbNufrTL+j61jPw8AXg4A74V4XnwcAL7/0hitoc9O8nuAeF6dBoDDzTEZAoAZiD+2BhC/08wAQH9z/680+yLZ7Jt53u83yr+ON+Ayg/giABhTf/tpAPh8c/tfAOCX2jzXNwHgNc3tN8MaX8g3+T4HAOAXAeDhppH+fJvH/ToAfKTNff8IAP6wuX3JSdyIL+S/DQAfg+bDXNWdBIAfZ+X/FwDe1dzWjvQkNB+mzfL3AMAz18A9+xC/hH2o6Tw/AABdbRyXa+7/OgDIqLo3A8AxVs427WO4Wf48yJea1st6829fB4A3btD9JQDg0wDw321M13Wuj17yicv5OVj9hfxFADAG7KMAALwfAN7B9v9LVvcLAPAkK98KALNrONcHWF0e4q/goyu1s9lPHwGAzwF7IQCApwHgJc3tOwBghtVp2z29jO2vaM/8+GX6+rUA8EibtvjnAPA76vhWuztsfwcB4Pcgpo09CAAvXed5lusP/kL+gNr/HQDwVVb2AOACALxIH7/MtX4Z2LOvaS/3svKHoPkDBAD+CQB+Ul2nBM2Pd+u4zz8GgF9j99DOC/ke9rfPAMBbVf/XIX4R/T8B4P2sLgsxZbetF/JNtpMCxD8mHoD4x+XvrOFYMZbNefXbrPxGAPi6OuYrzfm5A+IfzVlW9z64AV/Ir2nKCsS/FLvU37og/rICEH/pema5A5thn0vhwVmIv0YNbFpLrwxTAPAYxD8aegFgd5vHrXb/z0PEzzVDuXMQfw25Vu9/I/FfIP768CmMQ/hvV/V85XsJ4heBlXCGbZ+C+MtXR+GcCyHm1D4KANMQ2/VlQ87OuSLEX//eAgAXEPEfEfEQ22WM7Vtqbq7UN+dc0ys2sSF9gzEN5b0QP4B+nlXZmK4ARHwlIn4VYyrPLMQ/MtY7z7cCwBnnXMT+dgoAtrHyONsuL1O+1PftnKs1Fs65RYjvfcXxaPZTCuIvZHPMt+8BgL9rUiEeAIAeRPRXOM2ZZf7Wlj0j4hAifgARzzWv9T5Y2tcr2eJOAPiVS21utnt0tfu9ijgFse19G+Kv3lvaOajN/uBYru+5DUQAcBaW7/sDGNORxprX+r1lrrVa3/8x6/dpiCNK22CNQMQ7IP5i/IdrPJTf+1aI+/wSTgF9Jd4Ksk9KsAw1sxNwzi0AvackIP4hcSVYrU8AyF9sBYBp9lzSx94wuNZfyI8AQICI+9nfbgdaHHAG4nCtQJMf9pcQP9T7nXM9EDubS5wyp4+5HJB4k8v9+6e17tfcdz8i/g7EYbo/hvihvMc59yttNmvZ+2/ibyEOL40657ohDvmv+/6vFzjnFpxzv+Kc2wPxArD/iOvnOI+y7R0Qf0m7LBDxx1axgUWMV+K3vV9z3zzGfNfPQhxJ2QYAr3fO3eKca8thO+f+xTn3XRDTVZ6CeI6sB9sQiZ8Ja+ibldA837shfii9zjlXv1RnY7pim1IA8PcQh3KHmn7uk0DzvAjxF7ZL+2sOqPYD5wFgFCU/fwfEtMC1op1ztcYCEfMQ0zwuNx5nIH55/Mvm/f5XiKlHt7p40eeLL51yheOX833t2vPvNY+/dK0fX+U6y7X7d51zPexf1jn3/nYOvoxN/cY69kOMZUH/snmvPwkxrWLYOfeBNu9prf2xXN9zG/AgpoEs1/d/DrHP2t+81m9c5locZwDgZ1XfZ5xzX27zeI77IP7qfRpjWcO3AcDrEPHhyxzH7/08xD8SLuHSF+BxiCMEfA1EBmIqaltAxHetMv6Pr3W/5r7bMV6T9wTE0bsJALjdOffD7bZrBazWJwDkLy4AQB8iZlndKNyAuKZfyJtf9T4MAL+NiDlEfCHEfLD3Nnf5/wHgbYj4nKaD2dd8Gc9BPNgTAPHCJ4i/Ol3COABsR7YopI22vNLFkj3L/XvlWvdDxPdAHJLpAYAfcM7d7pz7Q+fcxBq66G8A4OWI+MOIGCBiP8a/4AHi8NK0c66CiPdAzG29hAkAiCD+snTdoXmvaYhD2D4iprG5eh3jhVP7mg/YOYjD4NEqp1sN/3vTGfUBwP8BAB9s5yDn3N+sYgN559zpteyHiK+A2GG9HgD+OwBsc8691TmnV/ivCIy/Zr0G44XSVYijT+vtly0A8IuImEDEH4KYm/nJdZ7rEv68eZ5XO+fKvMLGdEUkIf5iPAEADYwX4n43q38UAA4j4h3N+fIOdfw4SB/wNYi/LP5qc2zvA4BXQ/wQXivaOdf3YLwoPQkAvwMxfUF8+ULELRBHDBMYf/X+FgDcBQBnmvbQB/GX0EZzTH9rHW1t154LEM+bOUTcBgD/aQ3X+EsAeAvGkUtsPs9ehYiFdg6+jE393lr3gziy+m6IqQS3Oee+2zn3fudcZQ33dCX9cQnPQcQfaPrvX4bYN311hWvNA8AixpG9n1vDNd4FAL+OTXU2ROxujvN68BcQfwS7o/nvXQDwjwDwv63hHO8HgP+A8ULFPMQ/bD7onGsAwN8BwKsxXuCYhHjOtvvDA5xzb1ll/A+vdT+MxSAeh/hr+Fsg/kH0O5f82AbikwBwABHf0Hy+vx5iPv0nnHOnIKZSvQMRkxiLULx6g69/TeCafiFv4q0QL4S4CLEh/5xz7nEAAOfc/wSA34X4a/ACxPzJPufcExB/Obm0YOVWiL+iXMJnITayMUScvEr3ofEuANjqnPsF59zlfl0vi+ak+B6IdU+nIQ4lXVql/laIf8gsQMxL+xA7rgRxv30J4zDed6z/NjqC34Q4PP52iL/KlJt/AwDYDzEHeRHi8f8z59zn1nmdvwWATwHAcYgfYJ3SbH4a4gWOr3TOfdA5V13HOTwA+I8QvwROQ7wAcC0PNY6vQdzPkxDb0Q+6Nr/SL4fmj+ifhfgBN8a+1FxSgbExXQYuDiH/IsRzewbiH90fZ/VHIObffxoAjgKAzr3wbgC4uekDPuqcq0H8oHslxGP7ZwDwE865p9bRtnbO9bcQv0BPQ7xo78eXOxXELwO/1LzHnwWA/w/iHzKX7nkHxC+WXwWAf15rW6F9e/6/IP4xMAfxS9iH272Ac+5BiNc//Umz3ccg5sd2Cj/hnDvgnPtd59zZy+++LNbdHwwfAxrLN0L8caq+zH5vg3isFyD+cdPWD2kAAOfcRwDg/wGAD2BMd/k2xHa5ZjjnSs65sUv/IPZJlTV+SHsPxB8VH4A4Ol6BeD0GNN9tfgHiH64Xmue/CPEPlU7goxC/p/w759wDzrlNia4359v3QvwuMwUAvwoA3+ucu/R+9mMA8Pxm3TshHv9O9cmmATepfw2G6xqIeBLixVyf7nRbriVgLKv5U865ezvdlrXCxtSgcT3b8/WO5tfXfc655X6IGaBF5ZqF+Mv0iU6351oBIn4QAJ5yzq0nInbN4nr4Qm4wGAwGg8FwwwMRX42I2Sa98A8gpmmd7GyrOgtEvBtj3XuvSfd7DcRf728o2Au5wWAwGAwGw7WB10BMLTwPMZXqRzaLKnIdYRhiqcRFiClrP+ece6SjLdoEGGXFYDAYDAaDwWDoIK7oCzkivgIRn0bEY7hUG9hgaMFsxdAOzE4M7cJsxdAOzE4M1wvW/YW8KUF1BOLUuWchTv38o02Fk2VRyASuv4uUBrmWD+LKyj66jU7JmYpj1e0s2XfFAgA4/vtEX0Ofhx2s6nSXrt7HdB69l3Or9Mlq9wUAEb/mKufRV9VtiBzfpsJcsQHlatiWHNNabaW/v9+NjpLMaKejOKvZ5ppwmdsQ1Usu2e54yn1103UTuB2vpZ/XMl8fe+yxSefcYBvnXLtP6e5z/cMsvwe7dNiQYg1RREqJqXRK1Pm+zCPD+8VTt6rvHVfYjptD1/S9lY9rnnjFujBsiLLH2ru0Pev3G6tVRiHdi76m55Hv5P0cX1Rdk+3Lz3L69GmYmprcFJ9SKORdfz/JOXsBjb+H8ruUz9oXqrZHYajaQfVL55YEv86SMcI1+LhVdtXjKy6xqh9bvduRn1f7lFX8xhLbFDa+pIdWbFIUSjXGI0ePb5pPSSYDl2b+AX1qV70hxz9k9sDnBwBAkFC5qYKAtWv1djv24K2V5L0j8yOJtMwfpn0Vf1bo94kgkOVEitq39MHBnymyLmzI8W80yFdp08jl0iued35uUbWH7k3P0XpNCfGwOet71O+VYgVq1doGPcA3H8Hld1kR90Ccbvs4AAAifgBi7tOKht7flYTfegMlB0SWxC2ZkE3hTrtWk+o2jVAORjJJL/mhehhww47PSxPIU/PF1XO0H8iJl0jKSeGzrkNPXiOM5MOz3qA2RZF2xHSehnq/rUYrP8AjJ+9TT5IaM9gwVH3LjvXUfdZU/xXZrZRqtO97P72mXCFrspXR0VH49KdJCINP8A17OV4DNu2FfMmPR7bt6Tqq9ZZWSiB/cVLzAbRN0bk264V8eHhYZ2BbCWv3KcPb4Lfe9XH6A3txnZoYE/tWKzSH9+zdJ+p6umVC4AR7CCfVgzXpy/5PMl8VqBersEGS6vmcfHgmfPWAZGVfOaeZmWlRLhRIvjqRkOcNWJJKVE/oRlQTZW+VGKl+CJaKlCgvCKRPSafpQVuryWs0lP/OpDOsfdTWl77khSs3ZinWZCv9/f3wm//511rl/MABao8v01F0FSjR60JV+sfivFRD9Dzm29VEDFTnZtiPgLSvHr3eyi+8en6HUbhiXRTJ9vI26THzvJV/1GnwHx7oSZ+irymPk+dNpagPkp78UQxOljFJ7StNPSnq7nvlD22aT0mnU/Dc59F7SqJAvuGimofT07Ot7eqCfEfoHZY+JeijH4SYUBNP+ZT6Aj2/Tz8sm5pgHzVH94+Iuox6yY7q5BvChqzrHZQvxyO7qX2+spWI+dUgIefL/LR8H5sYu9jarqt3mOffc0iUXZXO+6lPPSDqtu2iDy2ZhLSN82ekb/czNGcLOfKNX//UWtI6dB5XQlnZBjJ96VlYJhUtIv4MIj6IiA8ulhu62vDswGVthdvJ1NQ1kSnYcPWxdp8yN62rDc8OrMmnLCzIr2+GZw3W7FNqdXtPMXQGm66y4pz7C+fcc51zz81nruSDvOFGBrcTHlo2GDSET+nu63RzDNcouJ0U2Fdvg0GD24qO1hsMVwtXYnnnAGCUlbc3/7YiHCDURIicZchWVIkUEH3EAxm+DQIZIvNWpn4vCQ1VWTi1EanzMiqAr+lfmt4WsTBNQ4ZkNQ0kYtepoQwThT6FYmqqPbVQXhRZaBAVLSat7jNg4WYvUGH0Oms7yvM41XZOcfD95bmfbWBNtoKISzi9ncRm0WQw0n3NoKgGEe9xp7lWiobCwt+4JMO8pqVsPmVlDVizT/E9D/JZxgd25NKqRRnmjGpEuUgnZftz6mMBj/zq+ZxSziCTZHNN9XeVcUxTgZz7STVn+ZAHgaLJKNqMhyuPcYpR+FQkHIolGV7m1Zz6BwDglN/1OHdVhbQ5baZelf4wUNSXDKMtCN78EgLsqliTrThAiBz1f8PvpfYmcmLf0KeXdy+hKCtl+aXdhcXWtmIOQdXJY+uM6lFRNsTYLFCrS+qDp3xhuUTPTe0nNX2JUxc9T469Y/QlT9OwlC00GHdasSUBUT+fyTZ6e3tFXSpDdAJPUT0jVUbGIQ4X1/2Das0+BXyEIE+2khmke8gr256emWlt9w0VRN3wXkknma3wjlO2ruZTqUJ2FkZy3Lq7ulvbg1vkNQOn6CRzjOPuS9vND2RFuc58VbWsuPJ1spVUTs9TOf71KrU3SGZEXb+iBpYW52h7viTqJs5TpDyj7NFXz8BcV09ru8bafr2JCF7JF/JvAMB+RNyNiEkA+BFgaZsNBgazFUM7MDsxtAuzFUM7MDsxXDdY9xdy51wDEX8eAP4F4p9I73HOPb5hLTPcMDBbMbQDsxNDuzBbMbQDsxPD9YQrIks55z4JAJ9cwxHgONXCUfjHKVkvDCkkEdXlqn0/o6gcXFpMRfP1CvAkC+k1nAzvRXV2TXVcQ8kdoVtZ9QLVqn3nU/irHMow+tgUhXeKNRlfWVyUoSqfhUALaRXSVmoaXVkKFWVSsm8jj4UqVehsSQiUbdejVZQALoO12IpzTtAeOi17eCXXl5KcWlZFx375rpqyQzZWVYuOAh0rZ/Jb/mXl1DSl5cpxJf21Vp+C4CBgtCtOL0n68t4STGEp5SnKl96XKZ5UyzKU6vtyDqcDmmv1qqIbAJMAa8g6h9L9hoxOlEzIUK+nx5H5AlSBTh7iLpVk26cmJkR5aIDC8Zoy4idl+3zWPm1XnH0TqPNUlW/najJ1bstrNJu12AqCA8/RtULWf6HynSHSOKULsg/6dw6JsjdHlIV8SVICahVJbwgZDSLq7hF1BUah4u0EkJKSAAC1KvlvrSqWVnKefJj0vBQShKvIWAIANNg4aVVL/SxIBuSPMpmM2pVTrZQsqaZ6cru+Atrgmn2K70PAqBWJFD3P812SIpKbprqh7XI9S6YgqVBzNbKPIFA+21O+oEy0JE2XzTE7qjeUrTjZ35XiPG3X5kVd1BiQ+86R3U+PzYo6P0ntHdwhrxEo+l+1SPaZzsg+SKfkfYcVJlGo6HS1EtnKUL/s23SXpDDVma1cOHWezl9fWQHoWsSmL+o0GAwGg8FgMBgMK8NeyA0Gg8FgMBgMhg7CXsgNBoPBYDAYDIYO4qoKbqJzEISMV+czHraS9kn5jBulsk/p9HJCsknxEBsqUyfXFksoSZ7hXZS9bX52UtRNTkkuZiIg7pgHkrdXa8huLTNe15On5HldirhRdV/yrWp5KZPGk6Ccuyg5XvmU4qAxDtiOIclp7y+wjHGBzuIpOWmcHsZ5l5uZMRMRV+U3bgauCk9d3YZOy+1YVrOGImrylM1Hjx8XdUPDW0Q5YtKeg31Sdkxz+KJNuO+rmU0V0UGSccOjBt27rziqCSY7l1B1XijndzLBU2errL1eTZVpDkWoMmFG5O8aFSWfqOZ7hY1bNit9k68lAbl9qDEssoykDz30sKirKz58b9fd1J6USiG/JLs7u6ZaY+NxbrCS+4uURKuLuIQer9u8OejAhwYwyT0gnxip9QNVtn5jibxaIH19V5bmU/SwzApYm5Sc8pFbDra2cUL69iqSLeRVxy+Ui6KcZv2UUuugvH7JrfWY7KGWwKxmqQ1BXfa9X1dtyDHZu7k5UReM3izKpR6S5YvUuomQ2XE6ks8lVHbshUy+M7x63w79IAHdg+RTF2bpuZvOS6nAQi/1d8+I5DkvyiUEkPBorNLq3aOu/H2DzeFkUo4xslT1M2PSxtJ6jBcX2IFyXmZ9aYOFHN1LVFeZQ5lPX5LFs6F8KbNfLcOpMxBnUtSG4dGtom776M7W9sg2+YyrKt762ZNnW9ulMq3riNz1leTJvpAbDAaDwWAwGAwdhL2QGwwGg8FgMBgMHUQHcsQyKkJA0k86zN1g4VFPSZTVGjIsnGQyZGGosh+q0CqXT9KZ8p738u9qbT/05a+IuvOzU6JcZLSURihDz6fOSmmxE+coMViqR2bv2j60m9qakpJKNRUeTeQH6ZoVGaqaunhelLM9FD47uzgu6iosPDZUkCGlrMoIGNYpxM0TqV1WTe8KsJrs4dWkQ7RzzbVRXZSsXEKGbEOWcbOs4p2zcxS2Hp+cFnVaXqu/wELzqCVCVRnblD1UfXD1R2F5ICAkGaXNsXYmVOY/YHQ5H7TMquzvBMs+V9dh90iNYxeNIzoZvgWWDTFqqL5WEqiL80Qzy2dlONlTdtaoUXsDlep7lkkdTqvsdxmloVZj3VCry/YFSUWpYj45DOV9NphPrtVkXyZViNsx/xNxf73ptDH27GGhbE+NWdhg46J4HqgoIhWkuZaI5DzEARlmLy1QH9VPHBF1DSQKQySHHooqWyinKyXrii55RsmlsjHVGV0rjBLpV9TYy0csVIfpvstj0v8UcFCUsZvk9LQsY53NyYTORqxkYH1GRQv0XN5EeAiQYplykW1vGZa0ivkqUVBRzcPqnJoHHo1VIpJ2pZ8jNUZf0x56bpIoGZmcor2lpa309NM7Vr4gDWtBUctKzM+FWSWfyRxFeU7R+5JqjiToXrKK4pPyJFWnawvVH7rjkKgD1u8uo+hMal5mM2Sfd73gttb2xBlpq9c67Au5wWAwGAwGg8HQQdgLucFgMBgMBoPB0EHYC7nBYDAYDAaDwdBBXFUOeYQeVD3i3M2ViD8UNiTfqjdPnKUuJTsWKL4VlzpbkmFaSW5x7lGpNCPqPvuJj7W2x2dle8YX5W+XU+fo2FMXzog6Py2lp0Kf0vDmumS62kSW9g3Skl+VUvzftEd8sclaWdSNbN8hyhUmlXXihOSQT7MUuT7Ktu4alOUES8OOLAX2Zsseeoxf6KKNuZbjp7kMJZHfn7fKvYaKTR0pzqTP7K1Wk1zViSmZyni+SONSrkqbL5bIHr2U5OUVy5Lwmc/SzTXUfUrW+vozUneCy78cPHSQQp4GnWyUyxwCyLT2HmgpPpXynqW1D7yVU78DAPhI4+oUF50bWkNJuzBM4d4AACAASURBVIZKenFxgezhdFW1J9CcU7q30S5pD1MTtIbl0cceE3W3HT4syhG7l2oo7Sit+NIR48OXS2odT0DtadQlx9QPZPt4uu9qlfbVc2cj4ZxcXxQxv+b0dykmlVtTsmlhINvYvcDGfnBI1GW27BTlhmNygUnFqx8Ybm2XE3LSBmNy/RL4xK0tqmeGG+oXZc5Vrqj1VDm29qS2IMesqmw8yDAJwqK0zaBfcuUxwdYaOMlFLrDT+ood3UAl7+fxsuLGbyLCMIQFJu2IzC7PnD4l9s0xedSS8udhXXK2k+x+irNSttjLSs/MpQT18yfJpGv7d/SIuhyTnAQAyBbY81zJRYdK6rLO1i2hk9dcvEhc7LkJaY83331QlPuHmdSuev6kErJPerrIBnN9XaKuzNap1JWt9OblffeO0jgsLNL6Ol9rfV7juL5aazAYDAaDwWAw3GCwF3KDwWAwGAwGg6GDsBdyg8FgMBgMBoOhg7iqHPJGhDBRJi7YdJ14QA98+d/EvjftJ27Rdx6WvOteX3HIGTfQ8yXXzPMkLy1kmrOKog0nTp2gtpUl981lZQpyP0/cLK93QdRlFI+rxtLg1pTuc1cv3WdXXmqKXhwbE+X5GeJxFRQHMZ2RXMLTM6SPmihIjt/E2OnWdn5ctn24S54nw7i0ggO7iZrBURRBscQ48ozTGajxdazOD2SdLiNbYKAocuBFK/829bTqNuP0LSqur9aTzTAN5kpd8lEvKM7hxRkqR+qadUYGLy1IDfqLSpf87LkLre2b9+8RdXt3bRdln2nRLtFUd6xPNGV8SVp12l7SX5sJF4HP9HMjrpuv8hWU51h/VyVn1nmSz+1naNySivud1HZVp/UaoTovhFzPWPaLQ9m+YpF4q+Pj8jy5Lrm2wzE+qFM637VFOjadkH5sQnFXH/42ccxzKXlf+/ZI2wkYIbRaUj4voLqoKte3hEp/PeQuucLGROkibzhY94eMTx1Fyu6Z2eu8FgmVfjx17Ghru/LQF0Rd4261noDpUDsnefVJxkWvgBz7/AU5Zn6KzhPlZHvQqdwGdTpvoV/ybhPnGBd4UfqUxJDMiQFnaN9A2WJlQq5T8Nm6qOjAzXLfJLXPU8/CZEPx1pnPc5u3vGAJwiiChSKNQZ2tRTn5zW+JfbftJF3ygtIE78nJMXbMHOZYXgkAAFDp5yOm+51X5919O60XG9gn1wxozjSyl5zxU3Oi7syTZ0W5r0DvOIdvuVXUPfg4cednJ6Wt5Aryfcdj72dVtRYq2yPtKp0iW8nlJL8846gOQzlHB3qk9v23Hn+4tf30E6TxX1RrI6512Bdyg8FgMBgMBoOhg7AXcoPBYDAYDAaDoYO4qpQV9FMQdFOq+NIU/R6oJ2UIYrpE4dNSTYYyupIy1BtxaSoVfvR9GTaq1IiSMaEiipMLFF7hqecBAHoHpaxgMaJQ6wBImoevpKhqCWpvpShDvZVFOs9OJVlVUrSUi0zqEFUoem5ahWZYSLZclOExP0l9cnFeSj9emJMUjJ0DNA5CRW4TWQmNKILZMg1OPkshOy9QFCQma7mEdaLayJW8PMVZQW+V36aKysEl/8YunBN1fX3SbjJpCtFWK3KMsikZXh4eJGqWU40vlmhcckl5XK0iKQI+G6jFqjTyhpLQQkZJWkJZ4anGNUVF7cn/sOkZ0Bk8AEgzvgyyi2vKSopRIvJKSrNbyap5LKScUnJxac1wYPQqT40xT5cNobxmbV62r5CjfXuVHZ04K+lrx89Q+cixz4i6mUmiOCxWFG2n/rgo+8DSuRdlSPuWgwdE+fte9YrW9jblq6osZXdF+ZtaUba9y5GvxzLzh6GkdG0kEBESPvkOj403l0AEAIhYmvZAfbPKz8h7a5w939ruUj554by871qaQvsO5DMNxy62tnNbJUWh1iUNzgH5gsyiSs8+q54vTFqzMXlB7stsozEvxz41LSXo6mUmQ5uRVKbZE1L2N5khqkFhREo/+uy2nSfnVVVp5DWYb6ptoiSmRhRFUGI+tcaeMVUlg5nbSvMgE8nxD2tybDwkm8un5fhPTMvncIU9//beskvU7bpzG2uPnN+ahrtwnsb1yJe/LeoW5xT15CDNjxBk27u2EO01pa6R8uTzqM66obBNvgtdrEp6ZSFPFJZcRr6rBRE7r6a91WUjjh8hGxx/huZSvbp5PmUzYF/IDQaDwWAwGAyGDsJeyA0Gg8FgMBgMhg7CXsgNBoPBYDAYDIYO4qpyyNOZHBy87Z5W+exXn25t57slh/ye59N+WV+mq60pHjbnFWNCcpZCJ6WeCltGW9vffOyYqMv3EB9s206ZYtp5kh+WYLzwqCpTydZqku/E2+ej7PLHHyXJqK6U5EdnldxRjslJnR8bF3UNzZ1nfMbeguyTOZaSdmZayi2dGJNcwq1DlNI54Nx9TVbbQKAfQNBFYxEyfnfdUymUuQyZkiQLFffXc8tzjQEAnM7xy+u0RCIrNxRPELV0G+Mf9hTkeNZV6mJgHNdsXspDcQ45+tIWUaW5TmXYfPBkXUONm1tlXYA8VLZVWqo69CqSyGu1Gpw5ebJVrtfJRhfmpZ8I6zRW585J7v+MmntFtrZjS7/kc+eVPJcf0JjXlLRlkKS55wWSa1lUfPMK73An/cTp85OifOIscTGLNXnedDfxPTEnfZEUrAPIJckeLpw6IurOn5c+5gtf+FJr+yYlpznYQ5zj8qKU6SvOS/9Yv4lSbS/OEXe2otY7bCQ8REgladwcm2sQqeuy9QWeWmuwmJDzZ/G5t7e2u4LniLrSgrS/OpODw5R69NbIhhIZaV/FUPKEeSr1eijbk1D+sczGVyefLzNJx9KibGtOtaHCzpPKSyvicnkAACF73i1mlKdIUB9kFA9Yr2/hXV+/ij7F8zzI5InPvDhJc294m5SN3bWX5kFvRvbD6WdOiPL54/Qe0zco/XtCcbZrw7TeYPuhYVHnMRv0KkqCVUlHHn+IpA2L03L9w8Hb5Bw+9LybWtsXTst1AV2MOH7obrm2xOuSY5xh71GJrBzjSk36hvFp6mcE6cd85g9DZdcLC3Ld1MRF8jFLZEyvI9gXcoPBYDAYDAaDoYOwF3KDwWAwGAwGg6GDsBdyg8FgMBgMBoOhg7iqHHLPDyDbTfyinXuIi1SWVGbYsXtfa3tAcW1nT0hOeZ1pg4YNqWV5z4tfK8+757mt7d23nhR1Dz3yaGu7Ny95W+cvSg5nwFIUpxKKJ6coTItMl3duRupw9uboWM18ChUXamCQePZVxVWdnJHcb2QpdAt5yV0OfKbvqnisx8/IdLqDPcSB3b+deG9uE3/LTU5Nw3v++n2tMrJ+SCgd8nyBuI77dkut+Ltvk2mbA9Zkp/pWa3A7zudV3MYG44VrvehkSnIvuZ54Mim53/29vtqXyoHSGk/y9OgJxe9sSFuYZdrys3PSLhbmJIevzjS0AWUf9LNU2/v3Sb5hQmnk8+7TvPXNxOLiInzhy1+lazOt30itISiXaR6eHDsv6nSTua30dktN5lxajk2KHZsI5JgGLM25F8hxKymN8IBdx6l1AmPTUjO4zkT3swW5TgaA7KG2KOe3pxYKVCrUJ10FeZ/f8RyZPrs4R76rUpH5Ck6fJpt75plnRF25Ie3q1BTZXLnEfGNR8kI3Ep7nQS5HvqzBxrAequuytSgNpX+NSbkeJzNEXN/5ouzrCaXzjD7ZRq0kH3hJrrk9K8/TUHnjU0nygfPKj6UT6pHuUVnPh2qJ8ZYjabdzZelT+FKZbCDbU9g+Kso+r/Zk+5A/N9QjBPUTkDmVyF09HXIv8CHTR8+6JHu2eoqJn0/TnMl0yXePPWytBADA2GnSpR8bl+sqhvPSN9xxG/G5R4e3ijrH5n7Dk3Z09HG5Lm7i9ERre2i3XKd36HlynVyhn9pfLsv53VUgf5Qaks88L6F0yJn/GT82IepGDwyJcrlBcy/wdIIHNkfVWo7JCem/Z6bo/SzjyXG4nmBfyA0Gg8FgMBgMhg7isi/kiPgeRLyIiN9mf+tDxH9FxKPN/3tXO4fh2QGzFUM7MDsxtAuzFUM7MDsx3Ahoh7JyPwD8CQD8Nfvb2wHgM86530fEtzfLv3a5E6HngZ9i0n3jT7a273jO3WLfXDeFHfwFKVEWqhBowMLnx89I+aZ7e3fLRmRJtqiQk6HBdEBtyyRl2COt6AY8Nf22rSOi6gkVsk0yua15JYW1a/v+1vaBQ5JiMa3S6ea7KDR9nqVaBgBAJQvU00thpbl5eR6f0VkyWRnuLi/IPjnG+jPDpK/qjWVDiPfDBtiKiyIoM5m/GgufJQJpsguMkZFVdeFNh0S5wtIMeyrUm1KhaE7BCDWdhVFYuvtkGNDTOeaZZKNO/+wrWgqXktS9G7Fw7slTx0XduYvSFqanKBxaLstwfKhSCdfK1CfVqhz77aMUXtwxKuW+ckntOhzbuixl5X7YIJ9SqtTgm0epP7IZRqtSaa6rDbq/7l6Z+p1L4gEA1BiVY2JRhm99NcaFNFHCGqEMISOTKPN9lS49kFSyVJGoCLX6vKibnpZUN97f2uRqIfELFhQNpFaW8mqjg+Qn+nslTa9YlHSn6RkKP/f3yHt57u0U/j57QfrrubL0TU+dJfv0mN+qh8vKld0PG2AriAgBG4tMgcnalSS1JGB8pVCF0QNUkrbMp0Sg0pj7SgKT3auWIKzXyDYzigIZeHKucVqUljkMFX2tVqHxbiivksiQ4UShNKKkkndMMJpEoiGvWVO6sMiuk9ZjGjb4jgKR+gNvAV5Fn+IhQppRIxOMLtGoS9pPFNK9aqpeRsmj7j1MFJaHHviaqHtKybDeei/Np2pCSc7O0TX7nbzGAsjn+eED9H4xsF/SRRI5+U5TZPSxwZ3yPMluuo6mF/dlpD08802i5pw9LZ9N9x6SNLjII9+q1QqdR+9j9VD6oqgun1URk/CMlPzx9YTLfiF3zj0AAPpp8BoA+Kvm9l8BwGvB8KyH2YqhHZidGNqF2YqhHZidGG4ErJdDPuScu9DcHgOAoZV2RMSfQcQHEfHBubn5lXYz3Lhoy1a4nZSLxeV2MdzYWJdPqdUqK+1muHGxZp8yPz+73C6GGxvr8inVkvkUQ2dwxYs6XSxPsWJqJOfcXzjnnuuce263UiswPLuwmq1wO8moDKWGZxfW4lOSimpieHahXZ/S1aWVaAzPJqzFp6Sy5lMMncF6ZQ/HEXHEOXcBEUcA4OJlj4BYkizBZIIqFc5flcSkBONwZ3NadkzyfVOMq5cPJEfy/r94tyi/+vU/T9cojom6JEsP63mSi7d7zzZRvjhNsjuVRflFd3jLgChPzxPfqVqTPMM9+0jece8+mZJ27pGHRbm4QFxHLbHVCCU/kMsW9fR0i7rQES+8q0fyFRs1ed++R/159gINs04RvgrWbCu9Pb3wwz/wula5yqT5chk59lwqK6N4zYruCfPzFKGJGsrelCRdwFJHOyVlV2bp2V0kr+l5invJuIiBOk8iobiXjK/qFDGYp46uRLLtuS6Zyrq3h14+wprcN+3L/pudIm7e2XMnRd0+Jj3qKx6r5tVzXvU6s1yvy6eEzsECW1PCJcGyWdkvGcbh3j66V9TVVT9NjJFvmJySEmVDQ1tEOTVA/PrirNw38sgIu3vlB7pUSq4xq7AmlBoymphWPjCsky/wFWcyySQTE0lpc/W0LN9zF3FVD+yU8mqVmvRrJ56h/nvm6SdE3fPvJm7o6Kg8z+nHlEwt4xVHjFMctW84a7YV9ACSrC+SaSYH6CSXNsNkRRso/dzCvPTfIZMyTHdLObihnEyPDky6T0v8cY60r76T+SjLyaD9x7ZjzwXNIQ99Nm+c5sbLcpKz3lV7qupZyasDtW4mBLJVVD4OlS/1WTVf97QGrMunBODBkE/vHyfZF/MwlPdar5I9hA05D72UnGvbD+xqbV84KefE2KSSttxKfnpK+YItc3SdQiif7b0Z6fP2fefLWtt9W6V9zpUlL3sRifFTVVKgyfOMo12UbV3MyHeRBJOe3XenlH5MD8g5MTVF69tKdSUpyeZrSq3HUG5MrN1aXKT3mzC6vvjk6/1C/nEAeFNz+00A8LGNaY7hBoTZiqEdmJ0Y2oXZiqEdmJ0Yriu0I3v4fgD4CgAcRMSziPiTAPD7APBdiHgUAF7eLBue5TBbMbQDsxNDuzBbMbQDsxPDjYDLxr6ccz+6QtXLVvj7ykAE9CmEX2JUj0pJhkgSCQojLkypsIMKuyeAQi8jPTKWcfRJmbnq/FlWLslsT6fOnmxt3zl8j6jbtlNKgm29SOHn4jEZfupLSb5ioYcoLMePnxR1I1uJCjM7L0NTdUVDGZ+gcHikpaZ8OZQlRllBT/YfPzKnsnhCpDJPIo1LbYrC+G4ZOt6G2YpzENXp3nkIV8uF5ZPU/kxahp7LFdmfJSZZdVKNQ1LJHu7YvbO1feKMtJNP/PNnWtt1T1J+0ikpZZhlbcplJC2mu0vSEHq6KZx35523ibrBAaI37N0u6VMeyl7hIW4uewawVEKtvIXGe+uItNut20jOMwylDZVUpkFOJcLL/MzfSJ+Cng8JJqU6uIXoEumkbMjkJGWhLRal/CioTHAVRsnqHpRzfxuj8gAAFLppbLoGJJ1likmXhiokrxTURCbRkpLiq9V1Fkvq/6SiaqVTNCcSTlIstiibG+ylclpJ3Q0qik0XyxA5dfq0qDv1zMnW9nCfpOzNjX9VlBNMKrTG/JaWvQPYOFtBAAiYH/SR+iXtyzk8e5FC99OLF0TdxAWZybi3QPKZt9wsJd0SilpZZT6zrqgPXIZVU1Y8JafHaXGa9qEzDoeMt+c5rTPI99XXUNmnBSVNPpcCpVfH/ZE+T4LTqfRw60SNjA4UXib770b6lCgMYXGG/EORvacoVwtzM/SMccpHbhmVfsNj/v+W598u6m6tSAqd79P8Lk9KaskQk2DOKrlKmJF+Y+w4ve/4vnxudKmMln5I7avWFWVphp4jyUAeN3leyirvy9NzrArymVxZkAtmA0bpnC9Kul/VUR8M98hrRqp9XPp66xD5l5PPyGf3tQ7L1GkwGAwGg8FgMHQQ9kJuMBgMBoPBYDB0EPZCbjAYDAaDwWAwdBDrlT1cHxwI3prPuGgjAzKVNefefvYxmYq+V6Vt399HPKR0SkmABZKzNHHxZGs7qkru0469u6ltio+c7ZISZQNDJHU2NS15W3PzUgaIU8sGB2Wq9YBx5StKclBLC5Z5GmTFV9PlCpNjajTk765+xnNFlBy/JMr+SjHZr9ARjyuxPhmqtjAzNw8f/YdPtcpRnbhknkpPnWfymAXFj921X6Z7H+wnrnH/yA5R16e4v2mW9nj2SblG4NtPnmltlxVnUykbQsCIkQWVSnnfjp2i/Px77qL2Kcm0HOPaaipoTdlNg6VOL83JhCh1ldo9wzR3e3rkeoLxsfHW9uSkTIKXyUl+7NAw9V82K+fOZsL3A+hhazR81k/VqrRlZN8fpqdkv8zPyznss3npR3JQT50bF+WueeJ3d3dLHr7PpBarFZVaXUnqpRLMHeckZzKjpPm8gBmB4vTmMmyeOjne2/vlGGeZtFhRJc9pKB47MlPfrXj0Tz51vLV94ICUOgPFl75wntKEp3ppDUO0yRJlnG8dMH5ypKRKFxaIPzwxIaVxZ2dkivMjj329tf3Uo18Rdfv23SzKu/bd1NruHVA5ahhHOoyUpKyT7ePT3/f0qhrpHLjUquabR0ySMAp138t9fXYevXpI89Z1WdRxGUZ9nG4Bmx/62bip8DxA5sOGt9NYaZ8Ssme0Xq8zMzYhylt2jba2e/vlWq3ctHwVq7J1S9uS8rlW99i6LpTze+tWtS/jWtfPSNXHibrs8YjNiUJOyifmMiSvGCTlOinPk+UuJh89OSX577WTsuz6yD9m1Xn9DLP7hHxPqap1C7sO7mlt795BXPmxMfmOd63DvpAbDAaDwWAwGAwdhL2QGwwGg8FgMBgMHYS9kBsMBoPBYDAYDB3EVeWQIwIkGBetO0881J6CSonOeHTzTvIeJ2ckv22gQLeRS0quUehJjtXJ8ydb20O9Mu3sTsb5q8jD4OsPPSnK5y4QN6mQl/zyREJyhR8/xjV75W+giJWriie3WJTawz19xDtrKCLxhXHJD8sVGOfLl3yrbJY4psmk4vvWpRZoWCRe6dAW4jUHCc1d3DiUSmV48JFvt8rpBHHLalWpLZ5gWtPP+467Rd2pc2dEeYpJCt9y+LCoSyqN8BLj4CfUeoI77yKN8EpZ8gaTCTml9u+hdQmHb5Lc2q0Dkm/claU5ECm+8RnGR7w4I3lxFyYlV5Hr5s7OSl5wrS7bm2D6rcmU7IOQpaSvq/UM2R7Jcb8FqD+7u1XK8E0EIgq+d6lM/eajtHs/oPsLQzkPg0ByJiPG202m5P0MDIyIcp75sbTWmmd9GiQkR9JpDWmWUr7RkA6ou0u2z/N4+nlpKwHTHo+qkgfenVLXbJA9hKG0jVpDzvEys8lsQfrOU2PkN5545lOirlqVfqxeJVtynMu9hMe8eeCc6HRajtmhg4da2/tuktrNpQXJKX/84Ydb2488KPXWv/CAXHvy5BPk0w7cdIeo23+Q+OU9vdIvaJ153+fjovW5I1Xm9XI+1BlnP1L2phExvetQPXsidd7VFcPZfppDrkS+PZYzoRGtzEvfaHi+B2m2niY5SfM20yVtJRlQGwOVC2TmvLSVLSOkSx76spca83Lu1WdoHdpFNb/586grL9uTVvLx2QJxyisl6cOrJcmH5zrqPP08AMAiW4vnB+oivlzvkuyn96HRbsmVjyJ5L8eeJl3/3iG5jqvK3jEWy/I4X726ZlJUrjH/t1y+lGsZ9oXcYDAYDAaDwWDoIOyF3GAwGAwGg8Fg6CCuruwhAPgsTDu8hUI4gaZyMAmhke27Rd2DjHYCADCLFF5yflHUdQ/IMGh3F4VbEmkZit7FKCv5binD+D/e815RLrH2zZelJFypLNvAWQzDvTLcU5mmsGYxpdsqqTpPPX20tT0+LmkK8wsyNN3TQxftUhJGPpNCS9RkW/2STDU7mKN9u9NMNmwTf8o1ajWYOEv90tdLIbBt22VY6+bb9re2Eyoc//g3vy7KQyw0nUfZ1xcnZYrsXBeF5PtVmPL7XvHi1ran8sR3d8tQ/kA/2dH0tKQDnTh1VJTnZomOMz8nQ4YLTEpztijHbHpeSkk1mExkQslFJVOy7DH5yu4u2X89PRQ6790i50oqq8KUTGpvsSxDoZuJIEhAP0ttz1Mq5zPyXqOQqBMJT47pli1bRRlZWDapUqBrak86TXPNVxOD01JQhalBUVZ8ZkulopzPnpI25BKJzpNh2dIc2dm5k9LGplW+8p4MnWeoX1Il0mk5xlx6zgWSxhVkKTQ+cVb6kNERKfVaqNG9zDP6io/tkh3WAydk/jwmF+g82bc8Vb3vSxvq6R8V5XvvI3+0b598Tn3x3z4vyidOkGRi8RFJUZhnkpO33ibTqo+OymtyakTYkH4sjOS9RIz6uSR8zygjqOhdeiiQSUOiflbrlPdsXy2BKNq3RPZQn3dlmsxmIooiKBbJ3zZq5E8ViwsarH/DUEngZqXfKM2TT093y2dy0CX96wvue0lr+2uMFgUA8KUHH2lt33pgv6gb6pXnWZgiP9LdI59N24ck9a7MfM7UrHynqXDKiKLAjk9Jak62QBSfnfskTRMrkjazm9nDyWlJuw26yCcXFYXz5FEphX3iyFOt7ZFdL2xte9fZJ+frrLkGg8FgMBgMBsONBXshNxgMBoPBYDAYOgh7ITcYDAaDwWAwGDqIq8oh9zxPyOx19RL3sxHKpqQYR/HAbpnm/MGHJE9qPkFpnCOU3NuhbZID+MSTJE31gpe8WdR95ctUVyxKeb16bVKUL45xST35u2axriTVgDhovZ6UrNuWoevMTUi+Z8OXcopDW6gcqnTUZcXbrZSJA1dMSL5nIyKuWL0iU0FvSUiJsq154pFWG1S3mb/katUKnDvyRKs8zyTfvve73yL2fcUrXtba/vRnpdzaFiXNtyVLnPxMIDmJaZTcy6Fu4sQWumU64jRLN99QvEzNL26wVNFjT8u+Pn1RpmCvsVTGQVquHygUSD5qi+L21msrS5YllAyo73srlgsF2V9djNfoK/7zIuNYAgCMj9P8qFRk3WbC83zIMv5ynXENMzk5Fj1dxPeNGorvqdI2Z/J070vk2JS8WeSo3tMzgxVVBnRwSqKuweZXI5R9OD8l/Q9vQUJxyBfnaH3JhfOSzz3UJ225JzfQ2i7VFP9Y8eEb7KpO8WW3bSee88H9e0TdHTfL8pHj5Dsf+RbJyT6k1jtsLBCQ8cY9pHvxAiUFyjiyoRp7VGPmMSnL/QduE3VRQ/bfhQt/39qemZTjcrRK60DGzz0t6vbuPyTKNx2m62xRPOBAcfsbdWpfvSGfGaEj/rm2cfRW4Wyr9Qy4itCh03ViDPRpFRmdEdk9bzNtQyKKIqiVaS7msvT8qYP0tVGa+iKjpEmzObl2gj+ztcTnuTm5vmh/lvzPPbfeJeoeepiejaWqHNNMRvLE00nW36rDz5+Xz58UW1+0c9cuUeciOjahJI9HF+WapgvsvMeefELUHTh8pyjv7SO53OmvyXVx00z6sQ7ymlNq3VR3L/mxPXv3tra/kHoIrifYF3KDwWAwGAwGg6GDsBdyg8FgMBgMBoOhg7AXcoPBYDAYDAaDoYO46hzyXJ64sb0DxPtpoGxKxSPuWzqveI9KT/P0GdLBvPdumRK9sij5btkC41eeOyvqjh05Qu1R6Wo9pT9aZBymQr/k8c3NSf5nN0tve/DALaLuG4+SfubDT50Udffe90pRTiSJO3z82DF5zQV5zYj91qqUpabxziHip2VyUiu1r0/yiF1AHLVGjTh+Ou33RsJFIVRKxEu79XbqtnIl3gAAIABJREFUs5e+7KVi3/4e0vl+4fNeLOo8xa0tJHjKYcnR9pOSbxwkqV+0znMEZBtzM5L716U4nBHjvu05KMd+y/YDojw9Q+sJCj1SE7rOOLuoyMgJZZxcb7lSkWsLFpW+tWPpsxdLsu7MBdJm52sSAADqKu1yyDiR2Zzsg81E5CIosvUThQznvUufcnGCxmp+blbURZHs030HSD+3p29A1PkJzSumMl8zAABQqxE/uaQ0/ytV2aeNGo0/hpKr6qqS55xjawN6emR66kySuKuB0pfuycv1B90FKtfUNUqqT2pVapOHkrvay9ZZZFPyuLNnZAp5LmN8+CDpKH8ivbl24zGf5YtttQ6EubZIO/5oZe3smlrLsX10lyjvYrzcb4zLvAcNtqZh4qK0zQnFN3/yycda27t37xN1e/cqXeqhba3tQkE+NwHJhio1pWdek/eZYGsstLZ4pNbR8Gqn1uZIKO1zpTXOS/4qPPWNBgKAz9qWzRM3vKtf8sSrEc2ZZFLa/eRZldtigObp/HlZl1Zrfb76BL0XvPD2u0Xd9//A97e2z546KepCZYNpvi5IdWEhL/1jGNGx589KbfEkex5GDXmNQOV7GNpO/mduSvq8yTH1zjVHPm9keJeoOzt2srXt8nKNz46Dcl3hySdOtLbHztJ6m0ZN+qlrHfaF3GAwGAwGg8Fg6CDshdxgMBgMBoPBYOggriplxbkIogaFabv7KPxTLMuQWYmF6LVU247R7aJ85HGSC5wryRBZPidDG6OkiAOnjshQ6jkWRnr+82WYqKTC+YWtFArs2ypTJp+efkqUy1VqUzInw8tdgyQXdmdB3tfEhKRDnDz1aGu7WJaUmtk52b7BQQobdTsZHtuZp2O3dMmQbAKl3GOtzuSfuAyVTsO8gUims7BrH6WPfv0bf6q1XQpleOzpYySxFKGsSysZqjoLiU7PSnuDSNIHQpZmXbGpIAIKUy7MS5lNf1yG885fpHTA1aqSzFJphHNMlvH4URnaO3H6NGuPvM++gX5R5tSDuTkpDzU1KeXzHKOaeCqFOLJyLiOpTT1KljHN6AblRSmduZlAREgxubypServZ2bkvYYh9UtPr5QUHRkZEuUaC8vWa5KeEzlpO/OMXlVW1J6wQdf0FfUpmZB+jdNQ0opKlkkoSh/zR5GS4suxELtOR5/05XznvlVLZFaUTB6yY7X8X71OPuXslJR2LRWlDXJpvuER8nm4iTQ4RACf0Sf4Nqj7BGTzdEl6d03BwBX3TaclDa5QIFrPEllBdu+aEoJOtm9hhmz8kUlJLXj80W+Icl8/2fnw8KioGx7Zxdoq6Sz9ioY5OEQSxagkUPV8aDAaXENJJIaMTqcpFKgoUo7Rv1y0GvVlY+F5HmSZv2uE1NBeRV/zmE+vKD9xUVFie9mwNuryuZEZ2SLK0wnqwy8/+oioe9VLv7u17SrS155+RlJZUxnyBdWafGfYOizvJZUiHzO7IN8n0kyuWtPpxrWfZZQ1LT1b1nLSjLb3b49I2eeTJeqjfI/0Td390j9uP0h+ZGCIfHmwqVKqGw/7Qm4wGAwGg8FgMHQQ9kJuMBgMBoPBYDB0EPZCbjAYDAaDwWAwdBBXlUMeNeqwMEV85gyToatWJL8JI2oaKlmqgT7JmT3iHW9tX5yWMjtTvuSedeeJC3foFsmbO36KUjrXFcV4dl5yQ/fvJ3mp/bv3irpTFyRn8vHHv0XtmZSyY8kUcbx681Jy8Ozjkos+NsVk0TwpA+Sn5bEj24nXvlNx9XYUiNeV9iQ/sVpR6bMj4mCJ1MubRyGH3r4+eN0b3kDlYeKHPfptycvjUmM1xTMMVbpdxziKWkYL1Q2FnL+o6jzxM1bW1RuyDZNTxHHnqdEBABRlG3q6SOqQy+UBAExz+SjFA56clNzFKuP9N8pKnlDxCP0kzbNsWtpUivGL/Ya8Zq0ieYQANGE0b3AzETYaMMukJy+cI4m4bE7OtUM339ra7huQnM1sVnISK2Xq75mZaVFXryt5QEd9ms3Ke+/uIh+XS0lZv4zibAeMRxwqnmajIcetzhxURc1hnsrcU7J9oUp5X2fFwJfj7yJpO5UqlacmJG90corKCwuSHzszK2X8+FqJVIF8eSPcRKfiHKDjHHJWpaT5kHGiUfG5QfPcWZlLAwIAlBdlP4yN0bPvwgXJ/Z6fo2MTan4XlB3nGDc9G8hrhjol+wXyl0dPHhd1lcpnW9uNUH6b6x/YKsq33npza3v/PslFHxyUc6mrm7jJqYyULHbA5ofy1w31zAVkkpJXUfbQ833IMBnP0PH083LOnj9Fcnu1nOLWB7I8fprGYvsutWZF+em+bdSnT3zlm6Iu98AXWtt33iJlLrXEcTJL7xcDw/IdoVaS7yn8maPfsSJm5+fPS9sNa+q7bo32baj5EkZykDMpst8zbL0VAIDXT3Y0PSnXpTSUT7nrxS9sbQ8PMA55yjjkBoPBYDAYDAaDoU1c9oUcEUcR8XOI+AQiPo6Iv9T8ex8i/isiHm3+33u5cxluXJidGNqF2YqhXZitGNqB2YnhRkA7lJUGAPyKc+5hRCwAwEOI+K8A8GYA+Ixz7vcR8e0A8HYA+LXVTlStVuH4MQqb7dh/U2s77cmQbFSjsHug5KOWyklRWCbfJUNkhw4dFOVPf+qTre3SnAy9ZPsoTHTsrAyfjG6X8om7D97V2k4lZTfu2SH3nZ2mcMsTT0ppHy4ZdW5W9sG8koKshBTynp+VFJotw1Iy8fQU1feNSmrOFA+dR0o+UcUNXUB9XWX71hQdBDbQTkqlEjzyzQdb5ce+RSE7BEkt8H0KSQUJSQnwA02doH19FRYOVJY1bmMJJZ2UZP3nJVV7nNy3K0n+30spGUZfjy/Liqoi5cksha3rJUWZUFJSNSa1h3VFLfFU9kVGEwiL0qaKC3SerLLxwW55LwGjaiQvHyXcMFsJggT0DVKIspdRUQI9xmxMFxZlaHdxUfZhioU6uaQfwNJMdVuHSGI0pWg/XOrQRZJaUlSSZRUmoTmraDJT0xOiXGaUmptukj4uwbK86kC/r+T2uLRhtSgpFmfHzojyxCS1oaaoT6UitWduVobCkypjKu/7z3yWaBMLC3IMmtgYW0EAYNlFI5Zx0zWk3+BSfUqJD3AJrYfRYJQk4qMPPyTKizPUf30FSUM5e4HqurrlMyyh/FjEqG9deTmeOotsMqDrJFIqO7FHYzatxuzUySdEeW6W6BYPPyjHM6myHI+O7mltbx2Rz8KRrUR32Tok63J5+a6MGep89C6bxXXDfIrneZBhGW0XKuSnTzwtZQWLTPIvlx0UdXWd3ZvNWT8h++z4ydOiPD9Nc3HbrTIb6yc/80VqW1XOmXtuvVWUq4xaqOl0SSWlOsdoIJpCk2HUFy8hn3mpjLT7DJvvNUVRqarnUZU980b3SOrvIpP3nVOSsb1Dsq+BPZPHK0RhbESaB3Vt47JfyJ1zF5xzDze3FwDgSQDYBgCvAYC/au72VwDw2s1qpOHah9mJoV2YrRjahdmKoR2YnRhuBKyJQ46IuwDgTgD4GgAMOdfKODMGAEMrHPMziPggIj64oMTmDTcmrtROatWrl1jG0Flcqa2U1Vddw42LtdoKtxP91d5w4+JKfUppsbTcLgbDpqPtF3JEzAPA3wPALzvnRJzExanFll0i75z7C+fcc51zz+XUEsONiY2wk2Qqs9wuhhsMG2ErmVxhuV0MNxjWYyvcTrp7unW14QbERviUbD673C4Gw6ajLdlDRExAbOR/45z7cPPP44g44py7gIgjAHBx5TPEKFUb8M1jtNuOW+5pbUcg5QqRS+xFcg7NK1mt2VnicfX33SHqvucV3ynKd9x+qLX9oQ9/RF4TifTV3S35bNu2So52nknU+Q3Z9r5h2a0ju4k3NZeRPK5HHn20tX1hUfIBXUJyCbuHSYpoYK98wGi+dMjSxD/tJHfw2BjxqpIqDXK5IrljJTYMjYj6ZyGUkowAG2cni4vz8MUHPk1tmCduWzIhnWUmy1/IZL/7TpYd+/3pJTSHXPZDOsWkIdOSv5hMUxuCrJSHSifluCSZTFag+ahpJb3I5D3rVcnRrTJO3xJOs5JtA3aeQD9/lAweMK50d06lJ85R/+UzShIxIa+ZYOnGMZQc9+WwUbbiAKDOpOn4WAWBvJ9QyN7Jfgl8OTicap1WvPByUfZ/eY78UVl9sOdrE7yETg0uOeVPP0m83dMnT4q6Riiv6djak60jw6Kur5tssFySX/t0eXaG5tYUk48EACjXZKQqZO0tqfPMzdO7j6dsLhvIeTh2geT/xsZoHU9F+Z5L2AhbcS6COltbweVSsSHb53GuuT4PyDHj7nNRyRxWynIeHDxAa6buuuO5ou6hx77d2v7ag98QdXPqi23IJDC3jEh5wnvvvVeUAzYfTp46Jeq++tWvtLYP33SzqOvqln5snI3T+Pi4qNP+aHhopLW9e/cu2XYmJ1tckFELLS+bCOi5ValpmdWl2CifgoiQCqjfLkzQWopTTz0t9r317sOtbT+QvnUhlNaTZ31aKcs+6+/rE+XTZ2isRg7sFHW7n0NjdeyklAHes0vy8vfupGMri/I9RcuMbhne1to+f1baygxb35JUs6IRybGZYfz3VFY+O/U6GsfWrCXV87A4R/5o+255XztvlnzzczPEwV9kEtpaZvFaRzsqKwgA7waAJ51z/41VfRwA3tTcfhMAfGzjm2e4XmB2YmgXZiuGdmG2YmgHZieGGwHtfCF/IQC8EQC+hYiX5C5+AwB+HwA+hIg/CQCnAOCHN6eJhusEZieGdmG2YmgXZiuGdmB2YrjucdkXcufcF2GpetYlvGxjm2O4XmF2YmgXZiuGdmG2YmgHZieGGwFtccg3CpUQ4cgcLdibDIn/6xKSP+jViF/mIsnN0umgt46Q9vCLXnCXqEsnJIdo907iSb3qB39E1P3dR/6R2jYm+W0X5iRvqlIhPdKk4hVOl2X52Cmmd664cG6ANIR7t0h+dKQ4dTFFrlmXVvui5LnWGT9sLpRc2nSC9k2r9L5FlHzFOtPgdowrFuISHfINQyLwYWiQ+PMXyqTRG4YyZW4X494FKO9zXqXbXZgnDl091NrSku/pIs0eZWC88GRGpo3WvP8G0hTzFIk8qzTMcxka07AubUiso0jJ86DmvzPN8Iziv/fl5XqC7Xmag9tHBkQdl62tViQ/1nNyvgaMTNvTdfUW5VaqFTh65MlW+ebDxK/MKO43H1JPPbsjxTUcZ2mci/PSF1TLilvN1ruEihe+Z9+u1vbgFtm/obKxBOO8dyst6iX65mz68ZT2AABPPU0818WiVLbS+9ZZ2yOVJr6o1uqU2X2XSpKPynXJU4ozPn9xUpRnmd5xyPXAYXPhHL8Wu5q6MLIFBGppAUSo5iUzo0xW+uQX3fcytSudLFDa7AfuoPVUtzznblHn6WUg7KID/XINyx6l5Rwwu9m1/zZRt3UHPXsyGTlnuxWHnPfd9LRcaxAqrvSWQVrTUCjotU7MHyqR9zCSPrjOxiHCzbYO1o4whLlZWhOxOEf2ms/KZwwyTnQqJdvY1yvXdV2YpPlTrMl73bVXcqS7B2kN2zNHnxF1h3bSGHuBtLmaU/kBKjRPu1TbFxrSF9TqVM6yNXIAAJOz5A/LM/K52qXGOMvWyngo/WpvTtrZQkj+KafyYPQwbfHuIfmcnajKvAyLDearHNn81bOajcGaZA8NBoPBYDAYDAbDxsJeyA0Gg8FgMBgMhg7iqlJWqiHCkVn6DfCxL36rtX3HThnOHU5SaD2rUryODEuZr5EBCu/u3SPlCUGFcC5MULjtPR/4R1H38DdJdqxakcc1VKQSHN2HU/SHMCXDzSGXvlOp3xuM+tHwZF1ajw6TMqzUlISaSokdMBlEX4XGXYWlaFcSRgkVRvSRyrU6XWNTI4guAlen8FV3jkJQC0oarc5CXgcPHRZ1bkRKSU1M0thfnJJh9MVZGVrjsm6ahhCxUF8ukOG6Q7fJkPF5Jhc1MS/pNuWaDPuXWSp1X1EqUoxmlEvI0GOPCgMOstTpw1vlXNm3TebF2JIi+1ssyjTM0yxdu59UdJuclAXNF6gN/f2ybjPhohDqjE5TWaQ+9rRUIAtgeooyEDYklezo0SOtbR6yBliacjrBJDIDX1K5Iibr5TUUDUrJjnHpMzWdoVSW1JMyK585I6XP+LGoPrk4T/6hVCNb5qmzAQCKU5Kqk2B0g4bqr0ZI91mclXbUKEs7D0M+165OUDmKIkG58dm8DJwcMx72b4D0Cw01hvxeIu1n1a01mB9BNQ48xfjWHbtV45U8Kit7Tp7nxOlpUS7XqE36moVuuo5u+8yc9HkBG/tc1y7ZPifbNz1H/Xx+XLYnYhSllCdpWElZBMzTNSszy0tibgaiKIQS84VZJg37gpdLGeVDN+1pbZ+ZktSSs/PSrspHqV/KivK1oCiKg3miIk1F8ln15OMkOfziw7eLuoG8fPdYmKJnXpeSVkRF05wrMX+JSgqUmUdO5X7IpuXzp8z6LpVStEFUssop1s8laYN7RohePBXI42bmZJ8kMkRvaZSvvn/ZKNgXcoPBYDAYDAaDoYOwF3KDwWAwGAwGg6GDsBdyg8FgMBgMBoOhg7iqHPIQEBYZb+wzDxNP8+gzx8W+r2DpYfdulTzdE8ePivKL776ltZ1W/NqFmuRxfeifKS3xI0+cF3WlBpOIU6noddprzoXzlBSW5nPz9K1VxdGuMw4iouRlVkHeC5eeCpSEnq/0ubJZ6uek4kFylapQccW0hFWDcduSBeImo7d5ptOo12DqPPFiQybHVFacsNIZSpnb58v+GkhLib9ElXjhGU/eZ9mX53WOj6lKv8sI9KWy5LK96G7JYz98062t7dOnZTriqVkpH1WtMg5fJNsTMKnPjNJBG1DShj05uu9QtX1s8rQoPz1JacxRSet1bSEeY6ZL8QYLsm/7BmjfvJJM20x4CJBmc6HGuNVa0hNZH3pqvniKF97VlafzJKQPyeek1JjP+j+bln6jUac5ffSpp0Td3LTk184VidccOjluiaRsQ8Dan1LkW2T2UapIicYJJVlXYjKIvpKT7VXSZzW2fkNz2ht1xqUOdbpqRYhHthaFkdxXEpHeCCwuLMADD3yuVZ5rPNbazinpuJD5ibriVmu51DCk8XWKNF5XPHv+HPCVNGSlSnWhWluAiuOeYGnd+3rk2qt8Xo5ZPaT+jbS8oxgH2fue4pvzcfIU9zsIZNnjY6oWMfAuQrWkApVEHmbZNStS5m4zESQC6BsmvvXI/gOt7TtUGvveAfJ1XX3y+ZOUjwYI8tTHU+NqXVIkJUZPnyK/3JOV/jTBZCUvluVxoznpl/0GdXhYkZzxhpJeDIF8V1KtsUmycSyrBXUjW+Q6JaYYC4tF2b5Z1d4KW39QnpXnnSjTO4AbkGufUMlHp3Lkr70U1Wm7vtZhX8gNBoPBYDAYDIYOwl7IDQaDwWAwGAyGDsJeyA0Gg8FgMBgMhg7iqnLIgyCA/oHBVnl6hvhNF2akBu6XHyW+ZViXvC0AyVkbHCbtcfQln/brD35blP/xs19pbVcjyR0Exs3THDqNkPF9nSLn6TTcnFsYKs1Wru2LSsMYfMXVY/W+4ngVCnlR9ln7Pae4jEy7NlI8dVAc8uFh4q8Vumj7GaUvupFIJAIYZhriZ08Tl6xR1amrqXziyNOiai4px5ePaDGSfVJUfM9IaI/L8fUZL02nlH/4S58S5fsYt+0WZVPlbsnL5prVqHh6Fa4XHUrun9ZUP/XUeGt7siw1oSsJaX+ZLdTPvcOSf5rqov7zM3K8szq1e5a4i+hfTbeC4DHuc8h0ohFX1gSvVuW4aR3yDE/xrdallItSQ7g6TWtRzpQktzpi44iKY5xQ5/XZupVEWrZdL9mo1ei8izOSJ16pLLJtmY5aMyrTzCbrKvdCHZSOMuOjc01vAKljjWoNTUNx0x3jNScTy/PJNxqIHqQTZM91n9l2JDs3xfJIRHqNjeKUe+xeHejngJzD/P6cWiMQMR+NapScemZwu1aPGvBAjmHgUxuqVek3hC65MoxGQ/Hh2VoivV7JU+PLeburPUdri3IOOqXFXWGnTfly7cNmIooiKJfI355dPNfartXHxb47d5OW+/Yhyec/uPWgKPtsEmeScv1ItSoHsrpA15+fk77ptgPEaU9npQ+ZvSj7aZD5lLMT8jlxbkru6xLkw/cMS852IUta4/o9pVxTNsfWGCyqMeZragAAhvJbWttPFOXawMdPnGht796p1jAl5X3Xy9RfZ07ROqlaVbbtWod9ITcYDAaDwWAwGDoIeyE3GAwGg8FgMBg6iKtKWUFEQbtIJFi604oMiZ8cp1B7tfikqHvxXQdEOdMz0tqeq8iQ4r997UFRrjA5Oy1LlWIpsHUqYZ5KXcNXYc0lSjss+pdS4XwhH6ji0piSlItMhsJGgZLNqqtw3wILq4eKUlNlYf3uXhlmGxpRMlppuk55gcJPTvXPRiKRSsDo/tFWeZ6l4i2eVVpSLNZaUSnup1Wa6yQbp5qT+2qZOXAr3x86HmaXdcce+4Yon1kgGxv0ZIphLZMWsvDuopJlHHMUkjtWlbZ4VqVALmXpPgujI6Luf7H35lGWJFeZ53fd3x4vIl6sGZmRa+2rVJJKKklQqLQiEAyiAYGaaQSIoRtGM/QcmG5ND90jGMEAh711gGYakAAhIUBCQi2gNWgpSWirUkm1ZlWlMiv3jMjY37642/zhL8PuvbFkRGZEvIys+zunTrmlebibm10zt+f22b17jkj5V67EpCdaF8GWpotFKYkqKDeIAevLbhulB5oo6qC84G2iXvbSt+lzckxpMrdfkaqzdlvJNVh/0u0UKElGOu1tZ6U7Uj/epdJ6aV8k0WEu9BpVWZ5mU4XaXvKSEWXK6Ov341ioJANO9Ylm1dtSR42Hi2q5l8tUIqWV4DKLeJ2+AwCplF9uJiXr2DacQ8zavFL1LkcLSubIFSKR+mbVVlKyVpvXnwrvHih3uEyWou0t7vi+11FuD6OOqmvirgy1bcoiOOefualcYEbMPaW+jpZhOvA2VZJMJdUR7hRlccR9QiVf6Kh3WK3kx5iJA3L82U467Q5mL/gxpcPq/8mj0m3skSkvZ3nlK14q8kZLssyHRr20VrsYPb0wLdIHbvdSjukz0j3usWP+HVMaki4HB1Q7llmTn2LSTwB4+uRpkR4f8fccLShZcMm7tR0qSbni6fOyTgaYvKU0LGWQ1aqc01xc8tKduaqU+y0uMbmLGizrqk9cOH5s+TjPbJe0pusax76QG4ZhGIZhGEYPsQm5YRiGYRiGYfQQm5AbhmEYhmEYRg/ZUQ15ouNjmh7ufi+UIadbzOXWdEXqPb/2tAx5/501rxkqO+lm5+y8TGeZFrZTkzquBnMLVShIvW8qrUMd+3NJ6cEC0qGO/d86pdN17DdROivroNKW+qdWx+tIuZ4cWKlz5TrxqnJnVmThlktjUoPW6shzn2bhvtNMj9VubZ87oTCVwsCQd8c3tsdr284rDTlXlunQ0E2ldWyzfK0Zj7BxTbzQTCqRZFu5g6vO+JDPQVbq6cKm1JyeY+X9OqTNH0ux9ixKl099+4dEemzfvuXjkTHpviqrwr632LM4pf3NppibzZS06VC5vuKhwAPtvnMb6bQauHDSu8viexsiFcKdu+NLZWUdUqhdy/l0Jq1cPhYKa56r9550mOa4UpGaWe66EABiJl4OVBjxOJJ/m2H7S8ZZewNAtbK4fLy0IPWnHRVy2nG3jMqYay25V4E/ix5v+J/q66SV5j5kfa1W8+OzrrutpNWu4/TpJ5bTxy748aug2jfFRPnRChW0tJuIaeBj5Uo1nZHfu3h+R+13Ec2r9LLazSCRr3u9n2Hl3/p+qeu3xcbwWLm71a4rA7b/hkjWQaz15mwcWcdM0IaqgyHZr/bdffvy8aCMCL+txLFDre7rZiDny/XscxfFuadOeDeIlSW5z+Olr7xDpIeH/Dg9MXpQ5PXlB0X61Pxzvjz75cNXcv4+S1WpA+/k5ByiHLPQ9GNy308qdUCk5ytew93RQzhryCXlonpkj3zH1Nn4M7+4KPKClOxrZ5nL3q8dOyHyRu+5Yfk4o/YlnXlG6uGLTPOeYXs1ghUb+q5t7Au5YRiGYRiGYfQQm5AbhmEYhmEYRg/ZYckKpK6ALW2FoVoGcyz6XiDznpuWMpQ//tAnlo9f88C9Iu/EObnEVGNR4mL1eySd88seYUYtU6tlw0zeLw3Vy3KpSrsg5K7G0jlZ5VwKoP9OywL40mBdRwRUy4b8b0tM/gEAI3u8K7yZWRkxbGHmgkyf8nKAm1hUshVrkVtIQAHyOb9Ml815t2R6GThqs+VR7UaOdBnZsqzO0n+8zvPFbBnMqSWxiloWPsqW/QczUmZ0tCGjvj3BJElzA3L5dviAr/u9h6VEobRXtm+WRQcNYlm+tpKlhGwJMUxL928p1gf0EvYKOQiPzreDbg/hHMLYy4T40nusXNTxZ4iUdCxwa7subarIqJ22lHJwqYmuF452VZpWY0zI3AGmtEtM5a4wl/HXyuZlu83P+vJWy3KcSCt5XcjaqqUiOXaUrXCpFim75xEZdUTSnJI7VZb8knet6pe0dYTjLcURAsfGEa46U5E6uRxnRfRQ5Y6UmLwlpWVcyh0ur05tb47LHFXdupXhOJfRMhQtLYtY+dvKP2bM3rku0LITeUvH+7/TLi+120MWkVS5Ae2wdP8+KXXYf7d0Z5wi314LzzyGnSIIAuQLTPrBZJxBJNtm6oKPdvlPH/28yBsYlG1x8903LR8XUtJ14P7+MZHOMjt7OpbyDGKebDNN1W7KVWk75+Ube0bHRd54R7rErc5598JldZ0ikwLXWlJqmVJRnPuyvt3mlSGdOHNcpI8+590VQsmExyd3GPdHAAAgAElEQVS9m8hHP/tlkfeqe+U876X3v2L5+HOf8tGydZ+81rEv5IZhGIZhGIbRQ2xCbhiGYRiGYRg9xCbkhmEYhmEYhtFDdlRDHqZCDJe867dGw+uSqnWpWcqEXk/UUfrJQGldH/zKo8vHJ85Jl4iLVemKaq7i9abKwx/6mPa2o7R52eza+tpcXmrqdFjcFHOrpUMxd0SYV63jU675WKjhlgq9nFfujkZHWKjbUakVazF3k82MNIF6VurBYqZrrbLQy5cLj301OABt5hasWvd20l+Sz9mosnDoqs0ipf8UEalVeGpaIV9d212SY5phF8r6q6pw2Z9veY3syZrMmyvI8qX2eDdUE5NSU3hkzLuqHBkcEXlBnwzRXGWazobS0aeUxjTH9Pm5gnSvlcr4us7lpaY9q+wtnZb7PHYOJ1wCcv2vU5pZx/T0rq002loTz49VPPJIa4VZ/9bjBA9dr91BrtjGwLTCUVvquSPlTrPFxsB6Xe5hqTL3ZSt09Bnl6rXm9fDalaFTn2t4rtaQ87yUqi/Xks8yP+v3TrRbbEzZVg25Q4cN+BG7bzuQbcbPg9KXq60HiNkYHaj6a6vniZk9ajeDcezrLKPeb1rGzq+j93boc/k7A9q1ISvvCq0t6evy/TfKvSOt/U5rqxDsQ7d6V3aTh6XbvcaU3FNz/OjDy8e5ttwLsZ1QAKT7/DPxLpRWrhkPlbzb4DNPyf1Xn//kN0S6MODnNIU+OX725WUdjg/6ekoX5Hh/csbrrpdqsi0aai4yv+j30JVbcj9dY1q6JCzUfJnasdyXtJDz7Z/JSveJrZa0q/mK35d2tiLvMZdW426/v+fEiNSQXzxxcvk4pe5x8Cb5zgtTXstfKnoXknoudq1jX8gNwzAMwzAMo4dcdkJORDki+goRfYOIniCiX+j++xEi+jIRHSOivySizOWuZVzfmK0YG8HsxNgoZivGRjA7Ma4HNvKFvAngNc65FwK4B8AbiejlAH4VwG85524CMA/g7dtXTGOXYLZibASzE2OjmK0YG8HsxNj1XFZD7hJh4SUBV7r7nwPwGgD/svvv7wPwLgC/v+61Yocm0yFn2c+BpgoNnQ79D1kdxtUpjWKQ93qik8rveKA0sx2mHdXa9EbD+9esVqUuM1D35FrRvozUz+bzUh8WMP1dJif1gfmCL7sOpT0zJ32ExyzUcCotyzM0IPW/e4a9Vn9iQunBmO66rEJrVxZlWNzSsP/bmYs+zG1H+UwHts5WnIvRZr6fw4xvs6Ex+ZztIrOTtmxPlUSbacyd0pAr98Ii/PcKvSxPp2Tbp1LK7zfz0doclO1ww6D0Czs07H3TFgdk1ywWvB1nlS/7RkfqBlvwaae03WFadXn+LOo5uZ9s7d84ra7D/d67FepoyVaOKXEco8FCgHNf39pHfMjyAtVugdoLwPu71iFqLThYjAKtN3fM5jpKzx0pjXGbtWPYkJrxdkXGXohYmfqa0i8w143r0NHNujwX8dptFa/ji18/S4rZmY6fMDc1LdLtph9bhfmtYjdbZisEgBUrTDO/+UrXmua+s2MtpJfpkF1U7zpxamMKsb0n2bSso6EBH1Y9UFeKIm03Ph2G8tys2gPU6bA9Suq63Ie5tsWy8l/PtwzFKmbIEsnBMzXqn+XgLdK3+NCQ3wtz9ugxkTerQqen2HPm0rp2JVs5pgAxXOz3VizMens9f1bOL26/7/Dycasq7WhhVvbZT//jQ8vHnUCN2bfINt7H3q8jA1JDfuvEncvH82Wp0Z6uzYh0yN4FhUDq35uZkkg/88iTy8fnp2Wf3bv/xuXjuePflGVXYxW3s/y4vMfBO24V6aGDB5ePqw1pcwHrhyN75bvS5WV9LbBYMAtLvjzROuPbtciGNOREFBLR1wFMA/gkgG8CWHB+19QZAJNr/O1PEtFDRPRQu7a02inGdcSV2gq3k2ajqbON64ytGlO2dSOgcU2wFWNKo9nW2cZ1xlaNKY2avX+M3rChCblzLnLO3QNgP4CXAbhtozdwzv2hc+5e59y96cLA5f/A2NVcqa1wO8mqVQTj+mOrxpRgl+2iNzbPVowpuWyvvAAZO8VWjSm5gr1/jN6wKbeHzrkFIvo0gFcAKBFRqvvrcz+As5f7+ziOxZJpli23FbQ7qbZfdiD1zo2hXEax9bQYSqLSUq68WOjbFW6+WFqHJNaSlfl5L/WYa8slm4GilFUMstD1A6G8Tg5e3hLF8pd5Si15hln/bPorclZJJfjfdmpyWavDvgBUFmZFXqzcKfIXWYMvRdNllxCv2FaI5JJyadjLeorKVWDE2ldLVjqRDv3NlqmV/zJSv035Ur+e9PGltJRa7s4raUd/v7eFPcwdEwAUs9LNU1/GpzNqAtFiyUpGlrWul7SZG7KckmZklDSDy1K0FIPLL3RfabXkF8dMxqcz6Y1Pkq92TKEgQDrr+xBvq7SWtvHnUa7atDULb5Er3JEquRZzmahdb8ZMhtJpyzprtWRfq7Ol36heE3kd5fawj103r9xgdljbtBvyHlrCwtHSLGg3oqwatCypj41r1SUpg1takjI4/qeyH67vSvWqbMUBYYe1eYu/M5rqVF9/IZTkS6V5ncVxR+XpkPLs/dKRtlCreXmDlj3penH8fdeW74hGW/VhNq6R9onIm1ut7EdQKwq87Gqc6B8fEumxW44sHweq7E9/1YdAb07Ld08YaffBvrzryac0VzumdNoRFqa8DR99+JnlY+5mFwBC5v515ICUZ7Tq8tyzz3o5yZcgXSKm80oGNOblqgNz8rr7xr1LxFL/qMjLKClrge1hHSvIc8cOKxeOg96d4We/9JDIO1H1Lh1nqrIKR5jrRwCYPHho+Xj/fuly+cA+6epyZtbXcwVKTseMsr9f2lgzlpJiRP5ZxieZhLFn7nivjI14WRkjolL3OA/g9QCeAvBpAN/fPe1tAD66XYU0dgdmK8ZGMDsxNorZirERzE6M64GNfCHfC+B9RBQimcB/yDn3cSJ6EsAHiejdAB4B8EfbWE5jd2C2YmwEsxNjo5itGBvB7MTY9WzEy8qjAF60yr8fR6LTMgwAZivGxjA7MTaK2YqxEcxOjOsB0trQbb0Z0UUAJwGMApi5zOnPZ3ZD/Rxyzo1d/rTNY3ayYXZL/Zit9J7dUD9mJ71nt9SP2Urv2Q31s212sh3s6IR8+aZEDznn7t3xG+8SrH4SrB7Wx+rHY3WxPlY/CVYP62P147G6WB+rn61nQ24PDcMwDMMwDMPYHmxCbhiGYRiGYRg9pFcT8j/s0X13C1Y/CVYP62P147G6WB+rnwSrh/Wx+vFYXayP1c8W0xMNuWEYhmEYhmEYCSZZMQzDMAzDMIweYhNywzAMwzAMw+ghOzohJ6I3EtHTRHSMiN65k/e+FiGiA0T0aSJ6koieIKKf6f77MBF9koie7f5/qNdl3WnMViRmK6tjdiIxO1kbsxWJ2crqmJ1IzE52jh3TkHdD2j4D4PUAzgD4KoC3Ouee3JECXIMQ0V4Ae51zXyOifgAPA3gzgB8FMOec+5XugDDknPv3PSzqjmK2shKzlZWYnazE7GR1zFZWYrayErOTlZid7Bw7+YX8ZQCOOeeOO+daAD4I4Ht28P7XHM658865r3WPywCeAjCJpF7e1z3tfUiM//mE2YrCbGVVzE4UZidrYraiMFtZFbMThdnJzrGTE/JJAKdZ+kz33wwARHQYwIsAfBnAHufc+W7WBQB7elSsXmG2sg5mK8uYnayD2YnAbGUdzFaWMTtZB7OT7cU2dV4DEFERwN8A+LfOuSWe5xJNkfmmNACYrRgbw+zE2ChmK8ZGMDvZfnZyQn4WwAGW3t/9t+c1RJRGYuTvd859uPvPU13d1iX91nSvytcjzFZWwWxlBWYnq2B2sipmK6tgtrICs5NVMDvZGXZyQv5VADcT0REiygD4IQAf28H7X3MQEQH4IwBPOed+k2V9DMDbusdvA/DRnS5bjzFbUZitrIrZicLsZE3MVhRmK6tidqIwO9k5djRSJxF9J4DfBhAC+GPn3C/t2M2vQYjoWwF8DsBjAOLuP/8HJPqsDwE4COAkgLc45+Z6UsgeYbYiMVtZHbMTidnJ2pitSMxWVsfsRGJ2snPs6ITcMAzDMAzDMAyJbeo0DMMwDMMwjB5iE3LDMAzDMAzD6CE2ITcMwzAMwzCMHmITcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghNiE3DMMwDMMwjB5iE3LDMAzDMAzD6CE2ITcMwzAMwzCMHmITcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghNiE3DMMwDMMwjB5iE3LDMAzDMAzD6CE2ITcMwzAMwzCMHmITcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghNiE3DMMwDMMwjB5iE3LDMAzDMAzD6CE2ITcMwzAMwzCMHmITcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghNiE3DMMwDMMwjB5iE3LDMAzDMAzD6CE2ITcMwzAMwzCMHmITcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghu2pCTkTvJqIZIrrQ67JcKxDRtxDRs0RUIaI397o81xJEdJiIHBGl1sj/D0T0XzdyrtE7iOgzRPQTa+Qd7Np+eLlz1/j7nyKiqe41RraqzLsZIrqViL5ORGUi+l97XR7D2G3Yu+f6YDvfPatxTU3Iuw/U6D5khYieZnkHAfwsgDuccxO9K+U1xy8CeI9zruic+9uruRAR/RARPUVEVSL6JhHdf7WFu5YHG+fcLzvnrqoDPV/YisFmO3DOnerafrRaPhtLLv0XEdF/7ualAfwmgDd0rzG7k2W/hvl3AD7tnOt3zv1urwvTS7rj1yeIaJ6ILhDRe652LLuWx8SdgoieI6LXdY9vJ6JPEdEiER0jou/dontcs/Vs756Ns1vfPVfCNTUh7/KO7kMWnXO3sn8/CGDWOTe92h9di51uPYhozxZd6hCAJ9a4BxHRhtqYiF4P4FcB/BiAfgDfBuD4FpXRuAqIaIyIqNfl2I2wsaQIYAJAHcBfdbP3AMhh7f6z28aUrbKTNceU7n3CLbjHbuH3AEwD2AvgHgCvAvDTPS3RFnCtjCndPvZRAB8HMAzgJwH8ORHd0tOCGQCuHTt5vnAtTshX0P0l/UkA+7pfud7Lfv2+nYhOAfgUEQVE9PNEdJKIponoT4lokF3nR7p5s0T0H/mv9B7wLiJ6koj+dyK6oi/+RPRNADcA+LtuvWS7vyZ/iYi+AKAG4AYieiURfbX7BeKrRPRKdo0jRPQggH8AUAXwrwD8qXPurHPubPecISL6OBFd7H4p+jgR7WfXEPVIRO8ioj/vJh/s/n+hW8ZXrNdOrF1/jIhOd+/3b4jopUT0KBEtENF72L3WbfMuP05E54joPBH93Brl1HU7SER/1P2bs5TIpXo1EflxACeI6BeI6MiVXoSI3knJyke5a3vfy/JEXfCvS0T0SwDuB/Cebhu+p3vOenb1mW6d/XP3b/6OiEaI6P1EtNQ9/zA7f81rdbmRiL7S/duPEtGwLucaz/zjlKz6zAP4IoA5AJ+j5IV/aQVugYg+1T3fEdH/TETPAni2+2//EyVf7uaI6GNEtI9d/w1E9HS33L9HRJ+l3n3NuWo76dbDq+Hb+hZKxtvfp+RLcRXAqyn5qvmZbn98goj+B3aNkW57X2rndxPR57fmEXecIwA+5JxrOOcuIBkn77yUSUTf2rXxhe549aPdf38TET3SrYPTRPQuds0VY+IOPQtnq8aUA0T0YUreDbNsbLiRkq/es5TITN9PRKVu3p8h+cD2dwCWkPwA/C3nXOSc+xSALyB5D9m7x94918W7h4j+kYgOXbainHPXzH8APgPgIoAZJJ3yAZb3AIAzLH0YgAPwpwD6AOSRGM8xJJPUIoAPA/iz7vl3AKgA+FYAGQC/DqAN4HUbLNvvAVhY479Hr+C8AMDrAPwZgEUAHwPwvQDSm6yz5/gzdOvwFJKXRgrJV8B5JANcCsBbu+mR7vlfBPAbAFoAfh9AjGRi/h4A+e45IwC+D0ABydfzvwLwt+uU4V0A/ly1U4rlr9dOl87/AyRfL98AoAHgbwGMA5hE8sXqVZu41ge6NnI3Evt63eXKCeAjAP5L9+/GAXwFwL/eYJu8cx0bWNjsed1zX95tn1kAn+62Z2GTtvIDAPYhsb0f7LbzXl0Xa9THZwD8BMsfxvp29Zluu9wIYBDAkwCeQWLzKST99k82ca2zAO7qtsffrNNuy+UE8D3dMtzeve43AZxe6xm7/+aQ/PgfRjKmvAbJePRiAFkA/xnAg91zR5FMKP5F9/o/g2RM+YkNtse1aie6rd+LZIz6lq7t9Hfr9T8gGUtfA6AM4Nbu+R/s/ldAMu6eBvD5zZThWvkPwL/u2moBydjzOIDv7eYd6j73WwGkkYyT93TzHkAy3gQAXgBgCsCb17K73WgrAEIA3wDwW0j6ZQ7At3bzbgLw+m6fGUMyOf5t9rfPIRkL7kLyXiaW90kAH+ke27vH3j2fwe5/9/w8gH++bD31esBTjXYfkk6XBfA2JIPdjWyAW21CfgP7t38C8NMsfSuSF2QKwH8C8AGWV0AyCd3QhHybn7sfSed+EEmH/7838bfPYeWE/BdZ+l8B+Ir6my8C+FEkXyk6SAYUB+AhAH+NZND7AoBfWuOe9wCYX6cM71rLaDfQTpfOn2T5swB+kKX/BsC/3cS1bmP5vwbgj9YrJ5IfMU10f5B089+KRFfba1vJAngLgE8g+dr7X6/iWl8H8D26LlZrN6wcFNe0K3b+/8nyfgPA37P0dwP4+iau9Sss7w4kfTdcr5wA/h7A27vHhwBESCQrh9axTQfgNSz9RwB+jaWLXfs6DOBHAHyR5RGSyeeGJuTXqp2s0tbvRbJqdil9P4ALAAL2bx/o2lDYrZ9bWd67sXsn5LcDeBjJOOm6dUHdvP8D3YnjBq7z20i+Aq9qd7vRVgC8Askk87LPAeDNAB5h6eeQTJDSSKSR/657/IZu3/7HNa5j755dZidrXOt58+7ppgMkioVD69XLNSVZcc592TlXds41nXPvQzIp/M7L/NlpdrwPwEmWPglv5Pv4uc65GpLO1nOcc2UAjyIx0jSSjn01rFcn6KYnu3lzSH4RAsnXv2eRDAi/iW7dE1GBiP5Ld2luCckPh9JVLKOt106XmGLH9VXSxU1c67TK34f1OYSkHc53lykXkHyxGL/M3207zrkmvK20kPxy3xCUSLa+zp7pLiRfea+E9ezqElfahqtdS7dhGpcv+yEAv9N91qNIBk+o667Gmv3HOVdBMm5c6j98THEAzlzm2jvC1djJGug6Oe2ci9m/XWqvMST97/Qaf7troGT/zT8g+fLZh8TehpDstQGAA0hWXVb72/uI6NNdqcUigH+DK+9r28pV2MoBACedcx2dQUR7iOiDXcnFEoA/xyrP75xrI5msvwnJj7yfBfAhdPuRvXvs3bMKu+rd033eOSQfbNZ991xTE/JVcEge4nLnXOIckoq4xKUvwFMAzgPg2rM8kuWwDUFEf0ArPTZc+u+JzZ7XPXd/V1v1JJIl3osAXuice8tGy7UG69UJkNTLWSR1MoxkAn6m+3cHVrnGzyL5kXCfc24AyYZPwLdNFcmKwyW4Jp5fZ60y8XbaLBu51gGVf+4y1zyNpE5GnXOl7n8Dzrk7L/N3AJZdWq1lA5XNntc9d4SI3kFEXwHwKSS/0F/tnHv5Bst0CMD/C+AdSJbjSkiW3zfShsDKdlzPrjbLRq6l27CNREqyHqeRLPWWusc/6ZzLO+f++TJ/t2b/IaI+JOPGpf7DxxTi6ctxLdrJOug6OUByw/il9rqIpP/xeuBtt5sYRvJc7+l+JJoF8CfwH4lOI1kWX42/QCJDPOCcG0Qig7jU11YbE9flGrWV0wAOrqGh/eXuc97dfWf8j5Dv8uU6cM496px7lXNuxDn37UhWbL/SzbZ3j717dvW7h/13+XdPL5dA1DJBCcC3I9FupQD8MJKGuqWb/wBWl6zw5aifQPKF9wiSX0B/Db8sdCcSCcwrkegefxWb0JBvw/O+C4ku80+QDDJ0hdd5DislK3x5ZwSJLuxfduv1B7vp0W7+l5Aspb0bidZqCckXis+hK53p5v99t22GkWjc+FLN+5G8gNIA7kVirJfqvYBEKnDLBttptXY9A7mf4M8B/PwmrvX+bjnuRCIJegNrg7X0YB8F8DsABpD8cL0RXe1gD2zl7V3b/SskX5LCK7jGHUj0kLciGVB/DMnL49IS2+u77XYQie7uo6o+PgjglzdhV9oO3w3gvSz9OgDHNnGtM91nKHTr4S/WaLfl+yLZk/E4/FgyCeAHLjOGOAA3qXJeRLJUnu3axOe7eaPddnlzt9zvwCY05NeinazRdu8F8G6WziCRGbwTSZ9/oHvf27r5f4lkPCgAuA3JnpbdKlm59JwpJO+ojzDbO9h97rd087mGfBrA27rHL+um1xwTd6OtwGvIfx1eQ/4t3bwPIZmEhd1+9wXI9/eXkPxABhKNfa5bLz8H4ASAbDfP3j327tnN7547u+lBsHfPWv9dS1/I00gq7tKmzv8FySaYZzZxjT9GsknyQSSdutG9DpxzT3SPP4jky1YFSQdpblH5N8vfAtjnnPsx59yDrttqW41Lvup8F5IvDbNItHrf5Zy79Avvh5FoAX8GyQCQ7Z7/CIBf6p7z20g2uM0gGUj/Qd3mPyIZNOYB/AKSAfLS/Wvd63yhu3zzcqzTTlfARq71WSQbLP4JwK875/77Bq77I0gmHk92n+uvkbg+6wVfRKI9+wHn3H9zV+D31Dn3JBIt3ReRfMG5G8lL8lL+J5FMpB5Fopn9uLrE7wD4fkp2jP/uBuxqM2XbyLX+DMnE8AKSl/NlA9Y45z6C5If37yIZX74E4Ds2Wbb/D4l9/w2SceNGAD/UzZtBslnp17rlvgPJPoxejSlXbScbwTnXQqLD/A4kY8LvAfgR59zR7invQPICuoCk3T6A3tXJ1fIvALwRyXvpGJIfXP8bkPghRvK1/GeRLEl/HcALu3/30wB+kYjKSPYvfejSBdcYE3earRhTIiR2cBOSH11nkExogOQ98GIkH53+GxLZD+f/AfDz3eX830XSt6YBvBbA610ijwDs3WPvnt397vlgV2r1ODbw7rm0OeV5BxEVkfwSutk5d6LX5blWIKK/BHDUOfd/9boshrGb6Eo4zgD4Yefcp3tdnmsFIvpVABPOubf1uiyGYRjXKtfSF/Jth4i+m5JNIn1IltkeQyL5eN5CiY/VGynxqfpGJO56ririp2E8XyCibyeiEhFlkbgBJCRf8p63ENFtRPQCSngZkmXvj/S6XIZhGNcyuyoS3RbwPUiWHwjJ0vIPbZdUZBcxgWQ5cQTJ172fcs490tsiGcau4RVIlskvLTG/2TlX722Rek4/EpnKPiRL1L+BRBdqGIZhrMHzVrJiGIZhGIZhGNcCVyVZIaI3UhI2+hgRvXOrCmVcf5itGBvB7MTYKGYrxkYwOzF2C1f8hZwSx/zPIHFZcwbAVwG8tbujdlUGC1k3PuDdTTY6Pp5AuSY34QeB/63Ql8uIvBURAWIfn0I/D4X6N4d3hRpHcsMwBbTqeQAQsXsAQMTu49S5QSiVQJ3Yn9tpt2Vx2HUC2vjvo8jJ8vD6UpdVCXmfVErWZqstYzzEa9hHrdVGq9O5nI94AJu3lf6Q3Gjal5EdimNAtlIYyLKGgSweEW8zZSfqSfhjR7KqEa/bZeSF+KmR+kN9HZEMsjKvz/ebqFwWeboV2s7/QyqS7dmMVPkC1v6qr7SZzaeU/ZNKx+yypJ5rNnIzzrkxXIYrGVOyuawrFPtWz1S2y9ucVDtpQ5YutnWuth123UDVC2tk51TdK7vi30ecyoxXnMyvq6+zZlFX2D3/Wz12rptekeePdV+KVxj66v0w6kSI43hbxpQgCFzIbN2xQpKq23wmvXw8OjQg8tKh7t9rt+/KsdPfR49Nm/FMzk9d3zKBKPL/0mjJd0+TjfVhWr5jdR/OsXdwPquUrnpsWKc8G2rc5T/mdiJ5+tSFbRtThoaG3OSkj9/D+6KDfFbHx8hQ1qFu/pidG0WyLXS/jFm7xR1Vv8x2Om7tPACI4rWdoqTT6TXTmZTM4+OlHpt0nQTBihmaP1eNBa22n/fpsvLrhOrd1Gq3RFqMMaw4MxdnUS5XNmV2veRqNOQvQ+LL8TgAENEHkWi01zT08YECfuttr11OH52eXj5+8Bsy4FlfwU9AXnqzjCtRcmryWfWSzbYKGpYu5kWaT1yXluTEJptlkyBlVIs1KQtdbDJDSsmOmCvKeENzVW88Fy5OizzUfXkH0jmZp8yowyyt2pY/YLJ5+Zwd1onjtjT0YtbfZ2xYlvXUlIyPUGWDOC/Og89syjHNpmxlNB3gXQf9JGtv0T/LRE62S458/fXnZGcvFWUFhoF/lohU50/Lc/nvknJdDjj1pj83UrYYqh9GbTbQzlflIFxtrf1yjwZkfJnOS16yfLz02c+IvOmUvM5Uy9vjcPWiyDsxLwfaTpFNOIpFkTdVqy0fDzZrIi9brYp0LWSTDTXo/ulsW0dCW4tNjymFYh9e+6bXLaflBEmWo8M+AKTUrDGlFgszGW9/pBcSSbZjmPbpTE6+KOp130/bTWm77ZZMx5Fvt456YTc6sr6jyN8nVhMiPjHkL3YA6HR02veDtvpYsF46Vj/c+cQkUHXbbMk64R8leJvMz8xjE2zKVsIgxEjJj3WdwPeDoC3H9rsO+Xne279feiqbKOn+7Z+t3ZY/ohtNPcHwfWggqyYtrM+s8/slSbNj/cEpUu29sOTt79lTcmz/5tTc8vHguAwgGcbyunfe7PqKB+cAACAASURBVMej22/YI/KoLt+jGeITRvXjlU0YQ/UByqkvH459MNM/SL/lp35l28aUycl9+PBff2A53WTv+jZkP2y1vO2M9MsgjB1p9mg2/d/Ozcu2iNW8pbzg/7ix0BB5IXsHzkayPKmCHN+X2McbPamdmJC/ZybGfTye/coeUvDX7UTyXdCJ5FykrzC4fKy9JLaaslJOX/DNuFheEHlF9j7qLxZE3qkLMr5SveHriFiV/Kef/1XsJq5GsjIJGVL0DFYJC0pEP0lEDxHRQ4v13eqK1rhKLmsr3E7K0SY+FxnXE5seU5oNG1Oep2xqTFm5wmA8T9j0mDI/v6kfhoaxZWy720Pn3B865+51zt07mM9e/g+M5yXcTvrDXbPCZPQAbivZnI0pxupwO9mMHNB4/sFtZWhoqNfFMZ6nXI1k5SwAriXZ3/23NaEwRJotkbdOnVo+fslth8W5wyW2XKElSRW5DOLyfjmj1CelG3EklyMjtgymtXBE/itKR315G1B6K7DrVNUyTBjKZSRiyykZ9V5osAVIpS6HuqNYu0yr31KV+UWRjtny32B/v8grZP3SuNZP9qkJToo9N9eOrdBArs+mbKU/A7z6oE8PMDlJmJZLe5W6r/vASUNxSlzdYsvqjZbWvUlbaDLJz5L6CFttsz0BSi6gLgMu2S7XZXmUggUdttRbq86KvOOf+Kfl40FXEXmurZaF2XU76sdNsTgq0seK3jYeW5DLqINspaKkmjuj+mSH9Z3QXfHkZ/NjCpRuUmiZ17bRlTpIne/7t5ZERk5JMFqsv6fk2JTOsOV7JTPTYutYBLNUcqsVE0rWL2MloWGntp3MiztKU8o17komA3VdijvsWF+H1ad6Ln1uirVXJuPHosV12msVNmcrpMq1juh9dmFp+biqVnUHDk6IdLXl+2LbSelia8X4w6RuSg40UPAywjBUUia9f4nJfOK0HK+DnJSd5Qv+b/vq8tzWlH8vnTglpZSH90gp4+Q+L2Eo9kn5ACnJXIbZajuQbR+zfT5ap65t0/HnvHJvcJsfUwIg3efbIMXmF46krLTdYDIupfXuUxLAiEmjaktyDKe87N/DY/5HQVyQeXy15+CIvEdWffQM2X62Qkm2W6EonyWT8ueuGG6I267MbNbVe5eNjym1ny7D5CwAMD7kpVDDg8MiL4q9ffapfULzc1ImVcqWlo8Hxvw7LZfZXR9sruazwVcB3ExER4gogySc9Me2pljGdYbZirERzE6MjWK2YmwEsxNj13DFX8idcx0iegeAf0Ti+OSPnXNPbFnJjOsGsxVjI5idGBvFbMXYCGYnxm7iqiJ1Ouc+AeATGz4fhA5b/x0p+SWKib1yx2+L7UhuKW8oFeXxIWQeESIlpYhbUuKQ455UsPZSoFZktJtS+lJgS8qplPLQEMrltXbK3+eiKnu14ZfpQlJuiLIynU97OU6/Wtbsz8sl0Bxz3aW9HvDl2mZD1aU6NYh5nfjn3KzKezO2kiGHybRf9orYUmZDiQtqrYidJ6+jnDsgavt20PuL9YpoK/LPWlH7wapsZbWt8kJlCxFbl62opb6GWtJusnM7yotFEPsCL2WV15xY2kKGXeciybyzA3IJ78kl389OzEtbuIFdJ6W8QuS0Wz7uGuIq9uRufkyRS/rcrdYKV2Lck4WSZ6TU0mbM7H5paU7kZXLy2VNZf62GGieKfX5s6i/J/lxekue2KywdSPlDEMm0cKGpNkHHTG4TtaWHBtIbptkyu1OSGu3aMmDX1ZK1kLlJSyuXaS4nl8a5xCjFxpSL01KmdTk2ayuiDMw2glB71PJ1dm5Gtv0Lb9sr0i1Wf7WWGvdDuTyPPr+svlg+L7KaNSYPG5SyS5BsB+FaMyvtlrLyb4eYbOKuPvmOLTf8Pb/y8NdEXi4v22xozEtYwox8zpSSrIjXn5ZMMa9YWrLilOeriI1dsR7cN8Fm7SQMUijm/dyEe2uK1ZyBClyCo6Q7adkWjaa3q1Zbnltv65eVHwuadSU1YfKWekX+XbUs63Bij7e5tJPlqS7ItsmU/BhTr6t2S/t3Q2qFhE+2Tb3KpCZZKTXJ52Wjj454u4oj6WJ0qe5lVM22nAPyuSMAZEL/bCGb7+i+fa1jO10MwzAMwzAMo4fYhNwwDMMwDMMweohNyA3DMAzDMAyjh1yVhnyzODi0mRZsfI93IZXLyt8G6dBr2OKa1EFqTV0+z13zSU1VSomi88ytX9RRGiomjsooDV2lLN0U8Yho6YzUZpWXZMSpfu7qSUW1KjO9FanmSGu9GtOypVSo41JB6sz6mLYwiqXGi4fbXVhaknkqqmeJucXjUU7DdcLjXi2dyGGWRypjUeMipauvO9ZOKamnXFLPxt016XgybaX/6zCVfF258asx/W5H/V1aaQPbTBfZVFrvhgpjz10H6qh13CuWkglisSOvGxDTAipt9JmW1IlHLArceCztb4i58OtXmwbSSjufZZr7aId9PnP3ho7W1rLzSHU6YqWOYse14OcunBZ5N94kXd/19fl6qzXk+NNge1j6i9L96EAJktCf26hKA41UVM9Oy5fXOeUglbkZJBUpT+vC0+yxM3k5pmj3ezyUdVqFCQ+Z3lfvWYljreVnZWJ5+n7bCdeQE+m9Hf74zJTUtWs3iLWq70+NmnzO/JjyZ93vx+g4J9tsftpHHsw5+e4p9Usdbpq901JZ3ddkGdJs7IohbbOU93a7f0K6OTx80xFZ9BGv2U05+T52K2yTVaAa47hrWh0tFym1LwXeTpxyn7idBEGook2uvSmG79fQdq/3sPT18z0Esk0rTWlXzaqvp3PnpUvK/Qe8C8qlRfmOq7dket9FHppe7lsoFGW73XDEuyBsKJ+8pX0sMnAgAye1quodCG/nxax6x6n5Txj6fhCruVsU+75Vq8k51eiQjGSdZvs1Ksql5G7CvpAbhmEYhmEYRg+xCblhGIZhGIZh9JAdlazAOUC4yPHLFfOL0q1NmoUCbKnVqrySkxQL/ly9TBRGUk7imHyjqKJ68hWnjnIXlsnLqmrU2PKKcvszPiijZ6WZO7FDk9Jt1kzz4vJxS8lFVvgWZEtn5QW5NBVn5VJQdsAvj2tXfEx5gmxGPpdeneN/ylf1NxdUb3O0EOAc+WWvSuhlF8W0lOa0mixiak3WX60in5tH7mwoaUlD+eDiUTNbSpbSZCurTjVSRqU7zMVbS7mK09flRWgrWVaKy5U6Kqro6KRIZ0d8evG8XKZ08zIaJxdflAN5z0MFX+/pQGl88rLvBMw3pJZIbSfOOXRY1NwVBsxYL3Jnp9NaM51OKwmGWlotV/zSar0pl1Z5/N1y5aLI6VOR8oKUL3u2IG05JCkRaTaYC1IlWeHLwIPKzaVe+eeR9C4nGXFM7hLqOMLMlvUSf6cj7aHNolS2WJTjbRxSQCApKWBl1H04DvyznZ2Sbg9nF2RE5DZzY1uvyv4zuE/WUW7Ayz4Cku+IKpMIXLgoJQHaPWaRSYtGRqQMKp+TY0OH+X6t1WUEaTAp5fjkuMjad8NBkaaCv2c6Je8RODkmd1j0yhW+Z5ktRMq1a6zsJAI/V8ex3jn4nIKUrQRMqqXHF/18F6e99OSpp6Qr9Lkl2U/zfb49ZufkmH3hom+LZkPOU+r1GZE+9gxzydqQc4ZCUZb3sTEmz3JyPrb3oJfYHLlNjTeQDGW9PWRL0s4bNdl/OgHr/2kl6WQumdsd2QdakSwfj1BaYNKwINxd35x3V2kNwzAMwzAM4zrDJuSGYRiGYRiG0UNsQm4YhmEYhmEYPWRHNeQUBMgw7Wmz5TVMU1NSE7Rvj9fbZZVmPIqUEJJJFrWbwxW6UaYPhHYJxl3yqL/LZGQZ6nWvfVpS4eeHxmVY15HYa76c0nR2mDZ05qLUeB0Yka6oMmnfXLMXpVY1rTSmHebSMVa/uxzTVeWz8rlymbVdlmVYSGzt4mkraSPA+cBrz6qO1d+s1Mw1lrh+V+lu1XVD5gKsoUKIN5Vmm3nxgyPZTWLH9bvaXaK8rvD6petMpVPsPspDIkLmLrQvlLq83N33iPQ3ybfpxabUXg6pUNblJa85HClKbeDBAa8bLCrXjy5QeyqaXp9K7Z3TkMM54b6U2+uKrs/c9mmdc62m3EGy+h5Ue0LKFanxdYF/9iCUWvsgWN3FHwBUa0rTy/TmodrTkM9JF3p7JrzGNJuS+t+AeD9VYc6VfXLdLndrCgBt1Y4dlg6Uhjxq+/7TVC7cOi2ZbrF8fq5zypfmFsPfBSnhKlP3S28nU3NynD07LTW6Y4N+bArVGNJS7TvCwtpnmFs9AOgrev3u+TNy38fFmnwvhGzP0p69oyJvYEDaKh+A5pU7uKDoQ5Xv2yNdeRZKsnxTC97m+9V+qr6cfIekc/45O6G0E/4O0+Nzuyn15iFz/drRoeV3EK0b5/BxhFT/0S6E80xbne+TeWefOifSw+O+vweqf7eZm1sKpPvE4oBMp5grYBeocawsx7zyotdpB4EcJ06e9Ptfps7LNn3gdYdEeqDk2z8Ipa1kSO49anS8TTYbsq/Vy35smJmT80NtDik2Pxsp+vJsp3vm7cC+kBuGYRiGYRhGD7EJuWEYhmEYhmH0EJuQG4ZhGIZhGEYP2VENeRCm0DfoddHnT5xcPm7F8rdBLuf1VpESDLk+6fcUsdd4aa1ZvqC01YFPZ5TmL654PVMmo+6RklokLj9vKY3fotJMZpk2eDgnn/Mlh7wGcL5favFcW+q4HPNTXMtIDdpKH+a+TqpVqWUMmL/hfKGwZh4AhOy5tT5/u2i0Yzx13rdFu8UddCsNLNtPECg/37EKiZ1heu+m0qsG2r8s05gH6rlD1p6B0iJr7S8vgvYHjxV7IZiGXJ2aZppmNyz1xCc6snxfPn5i+XhpTob+vlXtS+hnPrWPKLldH/l7hg1VVmXjznk9om6H7cTBIWZ1E7N2dUqzzTXSqplQmZN9ZHbW+/7NSVfPGNqvxpSU116mSOnn2Y20nrujtNZZFnuhP6v9hyttesb3j2JR+uhNhcyHv/LN34lb6lzfVmn1fabdVOVl2zdasdyL0GY6/k5L7vOI2s010+Q25kP+aiHImApcD09KZxqwcaLSkPU1pzZ33HzIh5jPlmWdxKH2Je8LoCS66C96fa8ek+dnZOj0fNZreC/OSl34c2fkuQNFb7zVumyX4bGx5eM7brxN5o1IbXqlxq4bS/sPnRyPiL2PA+XDHxmmPyZZX2Fa1jUfRvKX8ZG/nej9Jhy+L6HTks8zp/zJE9vndfjIS0Teo48/ItIT+7ymf3i4JPJGhrxOvFqTfavRlvXUV/L7BNpqbtRoqL9l/u4baj9WJu3rYGHxjMj75rNS332IRbXXfSBVVLFfFn2dzU2fFnkd9t5vLsr39VxHzrkGB316uMDbYfvGlO3AvpAbhmEYhmEYRg+xCblhGIZhGIZh9JAdlaw459Bk0oqTp04tHx86dFic22TLa0Gs5AXKTRV3l5UvyCWRVFZJTdgySFZdh0K/pNTWIdA7cumlL+OXlJuxXGKMSd2ThX7Xy8IhczsWKnnNibMXRDrDlntIRa5uNOSydRj7E8rKpVuWLYdn1NJ4rJbn0ml/nSji7bB9S0HtKMbUvH+eLHOQFarbElvXzKql50i7eGN179aRliT3YaHqVSZXsITKhnKBbJgOmIRCyZ6aabWkzeo6yMjrUOTlTDPKtdlT56WdHH/2qC97U7Z9LpJL0TeHvnx9dXlui3z5Ok0pxUgrt5Ehe854hUOzbcQ5RJFfopRuTpXki6XjthxTOi35fI71y5qSfGWasp9GzO1hKpLXTTP5Q6BkUhkV1pmYfQRKGpFPy6G62vRSpPlFKUUo9DFJSGpA5GXS8p68TJVZFda6ruQGzAad7v+sP2lpW0q7XWX9ibfDdiqd+vsLeOABLxN49BuPLx/PzysXsmn/nK96zbeIvBff/23yuiz8eKUtl9zbSpLUZuHfKZS2UGLSghtvulnkZdS4EUVeelCrKtd1F+dEOmDvHtLvpQ57F6pxKxNIG49Z2YsDUvY2OXFEpNst5j4vK6/bZGW/MPWcyEsrl7t55iI5nZHv9e1GylTWftdxt37zc1JGMXNRygVLw96VZLslx3Atmzp8xNvD7TftF3mDRW+fadWfHzkq73n2Ahu7lOzHqXF6ZNzLm2p1KW8hZh+33i7b++zZx0X6wQcfXj5++UteLPIGClJ+U697ydWAklNGzo9r6X75nOfOS9eg557178ChnJdicfe1uwH7Qm4YhmEYhmEYPcQm5IZhGIZhGIbRQ2xCbhiGYRiGYRg9ZEc15K1WG6dOe+3PxPje5WOtOq1WvDauqHRScaz0rEyz2FF5oXrEED6/qULHpplWPc7Iv6u1pEY7Yi6OWko32lL3LLe9FmowJzV1Bfbg/Xmpkxsele6k+ka8Bq0WSK3YXE3qICOmgS0pN3lcQ65dOqWUlm09l0/bByFidci1jymt/Wb6Pq0v1yVPM+2q1sAGSieeZvkpFRI5ZGLXTkG2dWdE1nWeaWSzOanLrEDaaoqFxG5H8p511izljsybVlpFct42+9PyOfc2pM2PM51e5KSmPWb9qqnq3Sm9bxD7eoh22GS0C7lL6LDJYu+EarfD+/eJ9MKs1zM+dexhkeci6d6M378vL0OO9+e8VtQpV4GZFe40/XG9KV2JBYHSpjP3qe1IasgrNb83J5OTms10IPeMpJgGNp2XFak8LSLH3Clm1JjXZntstB1BuxhluuIU6xOpcPu+Dw0ND+Itb33jcvqBV3s9+eOPPynO5S5373ul1JD3q/0bUcvrhht1WWFnz0pNeaHotcATk3tEXjrj62F0VO7z6MvLNpub9S4IL05dFHnRnrU7XyolbZ67uF1ckvrn/JBy+8v2k2RV33GhcvcYeP1xuyPdMs4uzPjjeVU/av9Xsf/g8nFa7anZfmjVY7VlCI7vb1N2n1XtFqZ9G09NSa0/1J61hTnfp7/wpZPyTDas3fdiqS8vL8n9LovzPp3vU26V1SDeYfbQl5dj5zxzidiKpB/YwWFZhkXm7nF+Ws5L3KDao5b3ZRoeHBd5ZWYr56fPirzmguxrMfMTPHPB9wnu3nQ3YF/IDcMwDMMwDKOH2ITcMAzDMAzDMHqITcgNwzAMwzAMo4fsqIYcRHDMgXYYeH1PZVH6wB0f9H44Mykl3FKatTTTt5UrUrPWURroYtprowoDfSKvzfyyliPlPzWjdexeJ5cfGBZ5kfJpvDTjNb5t5TN4z4DXY4WRfE7uDxcA0kzbmBuQ96ifkWF68ylf/nRWape5w99YhRcnpeNsN/1zhjsWvpgQMr+nXKObWqEM920fKB0erQidzq6jdOFaFM193adTsv76hrxtNvqlnUQDUnvpZr32LmpKLa32kVpl2uQ4JbWqzZy31QUVHrmYlzrhw4e8FjOvQgynIqlzXGwxW1D+6lMsBHZH6d0j5dOY3Nr6/O0kDEL097Gw42wfxsCA9ME90O/T/arvDw1KXeQjX/3S8nH6pHzWVKD9m7M9DoHss4PMZ3NKjWPZrBx+W00/NlQW5BgXBVIzyTXlulu6jtefd2K59yVw8rnDgI0pqg4oUiHla952uN/5boH832VlHRCkllbs7mBa9FD3yS0kTAUYGvJ2UuzzdjI6LsfvXNbnZfOyHwZqfAxYOPRI6+rbss1qdd8ulapsB+4fXsfZKOTlmNIssLEgK/caLJal1naw5MeGWI2PTab7b6qw700V12Jk1F9nYEi9N518znSe3cfJcaPS8LrgjpPjTUVp8OcX/XMX+uQ9txsX83GS2avaaxSx8ZSU/S6U5bM/c9xr5mfm5bMHyg98isU5Wayod/2Sb6unnpH7hxYr0n84H4vbqo3Tyr99i/1pPqPmDMy0O+o6uYx8/yyGfm9gTLL/jIxPinS2wMcK9d4Y9ONjqSTnh6X+vfLUAV+GNOvbKfXuvtaxL+SGYRiGYRiG0UMuOyEnoj8momkiepz92zARfZKInu3+f2i9axjPD8xWjI1gdmJsFLMVYyOYnRjXAxuRrLwXwHsA/Cn7t3cC+Cfn3K8Q0Tu76X9/uQt1OhFmZr0bnOkzJ5aPX3jHLeLcXMYvZXSUy8GCCscLtvRfUsuuILlcmmFLv021nLbIlmVmoZZ2C/K6+T7/W2Z4QrmwKstlpFrLL0WXZ6S7o3TDL3nVnVwK6gSyeRaW/HXmK3J57+KidHe0v+SXaio1mRcxV03ptFzSUd7tkOHh3Gl1V1CM92ILbCUgIMsun2KyI+UpDjGTmqwokXZRxa6jvTk6JUOImAyhk5I2VGHLYNNlKUHKpaTd1NJMEjAkbWjgoFx2O3Tk0PLx3gN3iLxw2Esfap//gshrzsgyTJ32S6Nnn/yayLuwRy4vLqW9jCM1NSPySmUv/9Ku7JxaVg+YvCXSRrSS92KLxpRcLofbb7l1OV0s+iXSPrXMzd0ehhklx1Aj4fyil/o4J79bZFWfqTb9ODKzJCVzg32+vvsHZXn4sjQAOC6HqMkxzun6Z8vjcSSXqcOQn6vGFOUGLIIfRzopKbkI03K5OZfzS8HFnCw7cbeXSirWUVKOiMkBOkxytsKnXMJ7sQW2QhQgnfbl5y4o81JhgzTr71klv0lnZRkb3B2cWsofG5OhwIv97P7KFSQfx4JA3aMh+3eNScu0u8JQ2SZvCeWMEjGTW/B3AgCUy9KO+0q+7Bn1/g1DJQsgb4/cHR0ApPNM2lRVsifFYtXLMPurhXXOBLCFY4qLYnRqvs4DJi0LlWSFy6waKtz8Fz//mEhHztfh4oJs03ZH/u3cHHcXqOSyLd9njx+X0hfV9RCwtmnWlRvYvBz02kwKWa0o+RUbA8tL8p4DA8oect5t5+kpaUfFfimxGvVR7jE0It9NYdr3w7te/HKRt2KkYFXE3+3pjJbLXdtc9gu5c+5BANpp5vcAeF/3+H0A3rzF5TJ2IWYrxkYwOzE2itmKsRHMTozrgSvVkO9xzl2K8HMBwJ61TiSinySih4jooWqjudZpxvXLhmyF20lN/8w3ng9c0ZhSq9bWOs24ftn0mLKwsLTaKcb1zRWNKTNzs2udZhjbylVv6nSJDmDNGZRz7g+dc/c65+7ty+2u5QNja1nPVridFIJVl66N5wmbGVMKfZddyjauYzY6ppRKA6udYjxP2MyYMjo8stZphrGtXKnbwyki2uucO09EewFMX/YvACwtVfDJT31uOb1v2GsqB/ulvnZm2l+yVpG6o4MHZIjVAeY6R2uD41g+4tySv25HSdFToz589oF994i82qL8un/um17/3qlK7WB/QWlXmRuepbLUJMZ5/9wNpVWN2vK6c9Pe9c/jz54QeY2OnMS22Vdm0hNcptXsxFJZ2OlIjWnItY1c46krem02bSsEhxxzZZliirGQVNhmfnyZ0NtcJhnrUPDqXJfy11pqqzpq+7P7br5b5N32mjeI9MikDyscFJVdDMpJAq/5TiQnmrNtrzm84WVST3f/wZtE+okvfXn5+A+Y+z4A+OfnZBjm/n4f6v1VR24Xee6Ut7FoVrpT0zrxgNlDtHHb4FzRmJJOp7B3YoKl2Z6HUOs9vUYyVl0iUkUOU76ftpoq3DPJtulnWsxqJPe7xEz7HSi3h9NzUrOfLfgPFoFyVdppyH6ZYXtjSPWJOPKrBmmlC9fhsqtNf24HUmOaVpWSc/4+Ge1OjLnB1D+nY9W7Isf2ZzCN+yas5grGFKn35e4xdf21W8y9o9q0Eqo3Jnd7l89Ju8jlpTvFEttDEoTqPcDHYVURiwvS5ds0ezfOz0t3t9mcHGMGBr0ut15XLjCFmz7Z9u2WtJulBa8FbqnxMK9dAjMLUNJ05AtsX4J6L0WxfN81Wv6e56dP4Qq4ojGl025j/uzUcrpv3E/Q84PSAPi412nKOcJNh+U8pRP7Nn/qqFTXzM+eEelHvnph+Xhi780iL5/zdtTuqApW/TtkGurYybJXquodyHTsbTX3yOZ82WtlaXOlAan9zhV835o/f1HkVeblXO7+b/PvnNExZUfR2vtLVowV18mi+pV+If8YgLd1j98G4KNbUxzjOsRsxdgIZifGRjFbMTaC2Ymxq9iI28MPAPgigFuJ6AwRvR3ArwB4PRE9C+B13bTxPMdsxdgIZifGRjFbMTaC2YlxPXBZyYpz7q1rZL12szertzp4/JRfpp08eHD5WEfKC2O//NN34xGRNzAg3XGVl/wSSlNtHNXunGYafmkun5PXKZX80nexKOUEtdnnRDoVegnBI1/7usibnZXLNIcn/ZJXM5K/gVJsDXSgTz3XrFwamq/7dZkYeZEXK5eJF8re1WEpJ5s5z4uglrGQVrIZ5rKM3yNeRZawVbYSAMhyF4VsaVPLb3iEyED9vtTG3QnZNZX7qli5Iasxd1F9N0iXnKMveMHycfbwDSJvOjUo0o8945cip6fkiml9Xi5Flyve1dWciuS2wFyd3fvye0XeK3/2AZEu3u+f7eGXS3nLhz/7DyI9s3R++Xi8Xy6xv4xJYWrKnV/QlukUE9zo6LiarRxTCCQiyBJbLie1fMsj1bVVpEml+MLEhJcaPfmY7GudhlzeH2W+u/aOq+X8ol8yLhZVxEUlb6m3fJ9NK7kNj3AMAOmMH5+ipnSZ1mERhxErCdqKSIPeruK2vE5/QdpyvMBc/LXls2S5i0TV/DqCZZ1JHip1f6zlDcAW2go5UMDGL3avUMl6Oh1/XqstH6ajZDwRcyM5OjIm8hotWdeVit9YmspIO+Gbk0n1Hy29yrAoisV++Z4q9Ev5wMQ+71r1woULIq/I3IIGSovTaes+7O1P2BdWurkkFgEyTMu+01/0Y8zAgJRtLCl3wVzG01FRjTVbOabEUYQlNjYT2/sWqgjFdeaS8vxJKesbyCvXlqGvw74+KVlqtaWUo83sLFIuEflQVSrtF3mV969uigAAIABJREFUqqzT8qIf32MVpVlLyQI2JuZzst1KRZ/uRHJ+M3XuSZEeYBFxh0py3+DIHvkuLRR8fUaRnMPQ6m5Qr2ssUqdhGIZhGIZh9BCbkBuGYRiGYRhGD7EJuWEYhmEYhmH0kCt1e3hlN0ulsGfUa9yyzE3U1IzU06aZfKhYklrGpgpR7EKvU0rnpTuu+bLU7TaZZnqCuTkEgEyKhbY9K90stebOi3Qp77VPt910o8j7hirfyF6v83JKH9hkYXDTSmNavyjdoi3V/bmtjr6O0tgxl1YF5cowy9yvBYHUpjZVaG3uVilk2kD9HFsJgZBibrhaa3vnAkXMJaJ2+aR+by6Qf7a0cs7WJqnpG7ztLp93SLbvVy56W114TroVjDNSe/fE8ePLx6eOHxN5BRUOfYy5RTs/K7WATfJ2ff+rXiXyqlWpMcz3+dDF3/bd3yfyvvik1Ps9d/qbvqxnTou8TN7rUykr+2B/U4Z+HqKNa8i3ktgBTe76i9UpaS0z6wdaP6nT48wX8eH9h0XeieeeEWluq+MHZT1R5Mcbp/rsUL/cM3JxzuvySWlmU0r7HaT8dTvKh6NzfhyJnNxTE0Nel8s0I6UhD4rKLV3ep5cqUv9eCLzd19vy7yoNOR6Wq/5vazV/3InWD6V+NRARUmx/TIONu3r/SMw05KmUHHAunlbuP5nL270H5F6nkxdkHz5/3v9tpaY10b7O9u2T7yXtk5OHMd+7R2qIR8akjr3F3ErmBuTYVGD2V61XRV6gZgZ7M35/FVQ7USzHAu56Lx1IDfFAn+9X+ybU3oK6svm0r/vR4VHsFLEDGqyvds57bXunKvvThYu+jS+ekXOEhTk5pwmyzO2l8sD4onteIdJt5583n1d684YfJ7R9Dg9JF4ntpq/jek3OJ3IqrHxp0LdNSdX38JjPqyzJ91i7JfcmdBr+udtNOae5cEG6d/zGo2yvm4oVMDToyzC5X9p5RrmFdW77xo6dxL6QG4ZhGIZhGEYPsQm5YRiGYRiGYfQQm5AbhmEYhmEYRg/ZUQ15fz6L++++1acLXl/08NefFufecYv3Ub5HhfFtq9C9jbrXPmbzUieXK0r/5hPMb+uw0knxcLFL56SGPKpKPdjgiA+LO7rngMgb3bdHpPsHfZmWlpZEHvcpOzsl/XuS8j+b5rop5Y+7oPTnAQ89r3yLF4tek1ZvyLpsKWfAXHebZtrg1fyQbx0EYhpZYvowHv4cABzT2sZKNBwr3W29xcqvRJLpG6Q/8TkWUv6Jxx4XeQss/O/wqAqPPCQ1xFHsbTNUIaZrZel7FvkhX55BGQL7tjvvWT6+77VSQ95Q/SFV8c/5ghdLbeIDr/0Okf7QB/5s+dipfQiPHju6fNyfknsNxkKZjpi/6zykZng7ieMISzWvQ+Q+nPUeAp5S3Qdp1UfyA77+X3HffSKvPye1lzOzXg/6+NeOi7zikO+zkwfkWJTOyfqOI6/FzajypDJSMxkwfW1GaUHRYD6Mm6qfqvDkxLTzpPxJV5SuOJPxtr2o/NDXI28Pzba0jXJZaowbbP8BOV4H2zymsP0yjvkk1+6OicWKyMTyWWrnF0S6Pu/r6JabXyjyhkdlGw6W/I3Kat8Hj4swPDQi8spLsh1qZ84tH89MnRN5E+Py3eP4ZqxQ2lun4/X7Q8NDIo9C5Zu95cubCWWFpdS+hIjVn4tVv8qw/Q0Fec9CTqb7WB8sqBgd24pDIiTvksn492WlLNvi3OmTy8ftlmzTVlWO767p9ec3Tcpb1mP5fM+e9PfMhrJf1NlesnJZzptSoRxj6g0/3+D71ZI8ORbw655XdoWjvs3jjvKZ3tL7UvzYlM3Ke0ydk/V39pQ/d6ikYibAa/LvebEs+0tffjvWZvf6L7cv5IZhGIZhGIbRQ2xCbhiGYRiGYRg9ZEclK5lUiCPDXjJyftq74am3dFhXv0QbKJlCJi2XaGvwS2+zczLcfHFYhhLuK/plsHRGuhPKpvw9hw5KNzuzU7IM6YK/Tiov81Jqea3NQt8OKldnAXNPWM3JZem9k3Jda7HOXFgVpDQnVstGLRbSN6/cRk6y6y4uyRDtp85Jd0wcHpbcbeOykCMg5poC9miBcm3IT2uRXGZtFaUbpeE9Xi7VaMhzF8YmRPrhE16ylEnJbjLMbHh0RN7jjAr/22Iu1IoD8txAhU8ePXh4+fjVL3mpyHvtG79r+Xhs8pC8R1M+S4rZUaMp2zejpDB33/mC5eMLx6RLxNm6lyVUh4ZF3l13vUSkx+r+PvOPfQU7hYNDxKQePDQ8KclSioUHzynZSTYrpQntph9TBktSDvbq194v0keP+nqb+YIM/92u+HFtICvrMIrk0i+x0NYpORQgp6R4GTaOtJXHr5ANR/VYLaPLlV8QOzlQkhHtCi8s+ns2SS1/V5hLtY6061C9ZkrMNW2auaxNhdv8fYgNFm0mxSM1lnGpYKAkF32hHL8Xyl7CEjhpQ0PDUs5WZ9LKfFHJ1+rehmdmpHu6MJTGcOCg7/9LWTlez89KF3RjB70ss1SQ11ma92U/rFwtVtW4Mcdc8D53TNrJDTdLd4/pvO8vlJLndmJvNwtL0i1kcUD2s/5BVtc750kVQQAUst4mSgV/fOpZ6fbyaw8/tHzcVD55b5mQdXrTHT5sfCYtbeWv//EhkV5c8PawuCTvOX3eSwlrVSmBDZQbxH4m2dV21ImU1JGNj522lgm32LFye6mmAn39/J6y71fL0j7PnfX9v1SS851i1rd/oyZd8t5wo5yfje3x94x3sQdE+0JuGIZhGIZhGD3EJuSGYRiGYRiG0UNsQm4YhmEYhmEYPWRHNeQhgCJzTbeX6SCnlqQmsVbzGqpGQ+ZFKnRvh7l9m5uX7gnDAan5Gyn4dC4ndZllpj/PhFJjGgby3BYL85stSd2wa0g3X67l8yPlLjDNtGTjSqcbK/1iueo1vbWGDF09NSvdceWZu6tC316Rl8t5jedASbp+PDMjr8Prc7RfCVu3Ece14iw0+Epvi14z11a64LmSdKM1fNNNy8c1Fcb82KzU8+65/e7l49MnZaj0KMXKQ1KjW2tJW7jzrruWj9/4xjeKvJtvOCzSk5NeFzc8LjXtMfvtPKNCMiMtdYOdlreN97/3T0Te5z/yYZG+e9yXodGR9jbPtIK3336XyPvW10n3iampqeXjLzzxqCwf6tguCACXTeYzvj/p0NA5JsxOpeXQx917AsD8vNeCT09LDecdt98i0pOHfVu9qe91Im9uzutk+4uyPI6ki7K5eR9W2sWyztpK7+mYptOR1KPGXHCr/Ds6krZCzH1lEMhxtaFCmbcif88gr77lsOKVUnKfQqqlzm3761bZmLad4k8iQsj2gnC3rUuLUodLDV/eVKBcFxakS8Jzsbf72VnZL0s3yr0eS2X/HpubkzrxPHMBHCodcKUsXUz2s70xxUk5tn/tK58TaUr5MuydlC4RZ894uz5/6jl5D+W+dfaC1/5+8TP/XeTdqvrDKx949fLxxAGpo643fNvPz0k3vzm1pyaX9XXfUnuktpM4ilFd9HU+f9673yuX1Xt33qcj5VK0vUfWN3cXefKM1FJPz8i/7XT83oCRAWmDYzd5F7iZguz758+rdwPr/o2G3N9y/JtfFel6ze8bCJRry4jtjdq7V7Z37OQ78OmnHvblU1r5TkfOjQ4c8M9SKkr30VTwbd5Uc6rZi/J9PT7h+4RzcqzcTdgXcsMwDMMwDMPoITYhNwzDMAzDMIweYhNywzAMwzAMw+ghO6ohJwBpFpJ2KO81lbm89Bc+PODTTvmeTitt6GDJ65ROXjgv8har0pfurcwX9JOPPibyZs573dadN98m8oK09CFdmfcawOlnnhB5lJLlKxb8s1RVeSKmDS03pVb+WeUT/MRJ7xv7wpzUPdZV+PSg4MsQa20mk5hmVV0OjEiN5GnmKz5T9RqzaJudfXLfwAHzJ91WIvI283M6n5X7BR6rS11e9Ylnl4/zJWlvAyNSs73EnvXkean3c6zX5Oal5r46L9v3Z3/u+5aPf/CtbxV5rbbae8B07bWK1OU1mW0o175IKf/rn/ibjywff+kv/krk5Wek7996xT/M3j1S87p38kXLx/fd/2qRNz4utauZPt8/soNjsoCzMjbAVhKEAfr7vGY5w+whHcjhjeuBM6HUNub7pWZ2sOT13bWm1CuOTMjnu23UayqPfv1xkTcx6s99+hkZ5vrwEamvzaR8O55fPC7yYpKN3mAOxcO0/K4irEHFcEhn5F6YDhs24ljpdAPlwzzy90znVCjzjr9PLpbjdbsmdbdz035cWyh7zasOPb6lkPQvnmJ+55fKsn2jqq9BEXoewHhRjhs33nrH8nG5Kp8zr/aTDI/4PUL9A9Le8szP/MWLUl9OkP2Hx65YEbY8kHZy9pQP7T65R47tGR7qoSnLPjp4UKTrC17jPqTibDz1Dfn+KzOt/G0vkCHO88wXOt+TAAB7JuUYnGbfC0nZ8XYShCGKw76uKhn/7AOD0h6GRv07JQvZFsU+6Vf9xCm/R+SDH/tbkRfRYZEeH/f1PzEm2zTHfIvvPXCTyBsalvOfbNaX4dxZuRcqG7xIpEdHvG0PDKn5DtOX33OPjJHhIO38y1/+Aru/HIO1vQ7037B8PDkp/dlnWXyXgaLcvzZ1Qc6NbrrV6/XD7Y5nsI3s3pIbhmEYhmEYxnWATcgNwzAMwzAMo4fsqGQlIEKBhauPmHZiflGFkQ78klG2Xy6ftCL5O6LT8DKBRlMun5w+dkak777Du9mpKBeJowN+KWh4VLogPHNchm792je8a7fBPdK93uy0dC+0Z8wvTc9UVKj6i/7cxZp07XPurFyWqdf8UmCuIJee9dL0IJMQUEfKWQZ4+PSClKwMjcrl+Fbkw/QusiVl7b5xS3EAIn99x9bg20qeETNp096XvlzkPTYl26F8wdtYa1Etj2eka7Hjz/rnbpWVG0smdxgZlG2fHpLLlIOD3q3k+QvS3ubKMl1n4bPVY2JokLk6U+7BtC/IiQkfgvjuO18o8mrzcvl7/MjNy8ejt0iZ1sCY7wN6FbBckf11qODLFA/JOtlOAgTIhv7e+ay354GidCs4wtyKTuyVoZeHhqX7z0Kfb+PRPTLv6DEpdZuY9CHSR8alpCHHXAA+/tSTIi9SXSjPlrjDmhyaW0oixv/UubVDWacyyiWiXvlnMqlWW45NpKQw7dj3mYy6Tn3Jj8EX56RsqzUn+0+dySNIuWXcPgjEpB5Z5vpVj6XcpWy6KPszZaRLx9Gil28sxFJyuFCWfW2U2Vh/UV4nx8LN9ylJSCEv7bhc9vVbVQPF+KQMP37q2FPLx3qZP532fSWVknbSqss2dE3f9jcfvkHkjZTkODY149Mnj0rpVWnYj2PNtrSLqCHH5GKauedVbhi3kyAVIs8kG3XmZnlhTkkUmZSDu8MFgFyfbOMTzM3kU8eeFXmT+6QkI5fzbmbrbSlhOvHUI8vHTz4rrzOiXCfv3+/HuTiS5XvTd71JpMcm/Ni1sKjGAvYC6Ffyvk4k7f4N3+6vS8rNahTJNh8c8OWdVe+mZ495udWZM3IOc3FKzgnvvufG5eORMTb32anhZYuwL+SGYRiGYRiG0UNsQm4YhmEYhmEYPcQm5IZhGIZhGIbRQ3bW7SGRcD22yNxhzc1Ld2yjDa+3a0EJgQpSo8qvOag0VH/38QdF+ubDXid742HpMiiqeleCiwuyPDrMb4m5v/q2V75e5J0+Jt0LHT3q0+dmpbvCY9NeN9WCCoEeSV3fxJC/Z74odcTnF2V5C0x/l4YUq4bsNqV90vXaYkeFFGcSxcUGDxO8jW4PnQMi5h6JaeBrI+Pi1Pve8sPLx7mX3CfyPv1XMkx85bjX4sUqVHo6LzV8lUWvFWxXZJtlC17TWchJneDIHqnhDLM+f2pW6g8rSqfJ63pIuUVrsvIuTUk3jNq91otY6OqMus6Z8zIMfLrk85vKvWjA3DLGDakpjCO1V+OC36sxVZf68u0km83hphtvXU7vGfX2MTYqtd8DrC5SKdl/mkq/yvvIPffcK/KOnZK6zSePeXeGA2pE7Sv5PRnaxs5cOCfSeye9ljml3IU1lD6Zq8jjWLk8ZY4PU6G8TqhCwYfMh2YUqzpIyT7Sbvn7NNV+lxrTjQczsjzptiwDBb4eiPvw3E7BJwFgzx6mfJmGlavXjPP7SYrKPaqD3HPDXZWWCnIsuLAkx+TpKd/3clnZL7M53/Zp5Ta3oPo3b9N6U+59mTwsXcfFLFT59LTUIh84dNiXpyB16zPTUm++xPS9g0pXn8/IvjQ08P+3d64xdl3XfV/73Hvue+48OA+OhxRJSaHdOLGlWLGVOEHQFGmCAIWDoDDqAoUMBA0K9ENS9EOMfGqBFnA/NMm3FkYdQEBTuEJjRE6awlENNZFjR9GbEkmRFN+PeXIe933Pa/cDR7PWf3FIXllz53Lo9QMInjP73PPYe519zr37v/+L23GigvVXFfM9UmVLu3QZLfta4ll5/JOoWx820mo5FLEShvoZze1/cx3be+k2rq+ucx3Wamgb69Q8oFs3uY/Jq2M2Nvk+7faxD7l1DefMXTh3cWf56BG0tS1WUIf95hus97985QqUVYQefnwcn8Fd9RxLYmGhqTTkSYJt/uyzn9tZvn5tGcpe/7vXd5brdYyjvOjziYjawiZ4elb2IwdLRG6/kBuGYRiGYRjGCHngC7lz7qhz7mXn3Bnn3Gnn3O9s/33KOfeSc+7C9v/7Z61gPHRYnBiDYrFiDIrFijEIFifGo8AgkpWEiP6t9/5N59wYEb3hnHuJiL5KRN/z3n/dOfc1IvoaEf3eg3Ym7XMqwurpsaNHYbuSGLZLVMazoIBDopmQNwQByjxu3EKpyX99/ls7y//kV38JyqZFdr7yCg4Fbt1EuQE1+ZwaV3CobaGOQ6CrVd7v+5dxiMkJG8Sp2TkoI2WbVBajWqHK3JdTWe6k5CKdQVuvgrC7qpWxbH4Bh6OmZrn/WlW2WYo9jRNpq9gXWUiP/BLKg372q/9qZ/k1NVxXn8FhwbD6wc6y9xhTcYSSgI7M3qe3FcPEFy5fhLKjT2BmuqDIw/O9RGU+VJk6y0L+0m5i/P3VX35nZ/nUu29C2cwcWlX+6j9m26knPvlTUJafQ4lSc5OHUTt9lKX0hUxFJ1HsNPD8/vZv/t/O8o1FbIdd2LNYqVar9Pmf/fmddZl5Vg8DO5Hxtd1BWc3fvfp9WPd5bpvxaRyi3+phn7KxxffFnBqi32zwsHtuHCux00Gbr7aIj7yyMS2ortqL+z9zSrIih9s9/uaif4GJQaaE9eUzXM8SkcGyi5K1Wp77kX4Osz7mlBQv56WlKd4Du7AnseLIUSAyt4Y5jpOKkmt0Qm6HKEXZTqGE19JLhIWjykI4oaQdUuaTeOxvYmGt2lAWwNOzmMGyLPrvqTrKDmoTeH/PC/veC6dP4bbCXrHTxXv/9hrKW3o9Pt+KkubkQ3yGzImMoNWKqgPRx3RaSoalnmnNhLe9cPoDegB71qf4jCgTbZkTcVOtY6xI6dPNRZRcvPaWkkXKdpvAZz3IPIjo1vV3dpYnZ45DWUm0W6bu6ChCKRll3DY3blyDolde+SGsj4+zRWJ9HOMoE9aqmw2MFS1DkdnH83mVKTiPsfLee9yubWUJXRCZt53quJIEr1NmAD1oVoeSB/5C7r1f9N6/ub3cJKKzRLRARF8ioue3N3ueiH5jWCdpPPxYnBiDYrFiDIrFijEIFifGo8BH0pA7544T0dNE9CoRzXnvP/xpeImI5u7xmd92zr3unHu90dMTk4xHkY8bJ+1hJh0yHio+bqysrd3ebRPjEeSjxoqMk3WV0MV4dPm4fcqGMnQwjP1i4Bdy51yNiP6UiH7Xew+2E957T3q8k8u+4b1/xnv/TL1U3G0T4xFiL+KkepDHnIyB2YtYmZ4+tNsmxiPGjxIrMk6mpiZ0sfEIshd9yuTE1G6bGMbQGcj20DkX0p0g/xPv/YdecsvOuXnv/aJzbp6I7iswJiIKgoBKQrMss/52N9BarrPFGtW4i7+sp4SperdW2QbumtIR55XN19o6f/aF7/wVlI2Ps9Z7TtknzuRQmx5s8n46bdQ+1WdQ17faZk1gpuzM+kKf3NlAbarPof6qLPSe8yqV8PQ4pleW6d3jBDWmzSbr1Wb6qGutlPD8JkWq4w2hkXO79Gt7FSeZJ+okfK2ZsLksHzsJ2373VdZTL22hJndCtWFRfCF0Km/50k3U1/X6bOVUKOIXyUKJtW0VZccUFnDbQLRhpITYibZeFM395y/+GZT99z/+bzvL3uHnXB5j/MwpTu3+L//1v4Gyk0pT7oS+d13ZdHWFDWjcxnvulf/7XVg/9eoPdpan8g8e4dirWHEuoALUOceNV1/sAmEX11F2ca+8in3B7S2O9WId67ebYl9VqfLxe5sYg52If5ltZ1hGedRhL62yLtL38Z4tVLH/ceLaUqUhp4zbNJ9hH5IpjWm3x/UQKSvLRJ0D9fiYhRjrRFpKNmM8ZreB+thQ7DZIeT/3+hq+F7HiPZGXxyWuz2JB2QoWuU5aLdRzl/OoIS4JjXSv01bbos3l2CR/eYxVmvWlq/zc2ljDOUn5EtZ1JvTvmVf2mAWs+3zI53BYWdzGXb7OlVvXoayprmVM2qcWUAccqvViia0Nuz1s+4aYmxOp51JJ/WAnrQeXrj+wK9izPsX7jHrivJNM2GWqOWoT4/x8XJg/AmXrm6jDl1PCSkWMjfUO9intDn82XcN7tiSeP5OTOPduchznG1SqfH5LS2jH/M47OG/m0CE+f6397wiL6l4f+4mc0onHMb+vHTuKVovdCN+Vzty4vLM8dxi3feIJftbnVb1HfexLe2JugjtgVoeSQVxWHBF9k4jOeu//QBR9h4ie215+johe3PvTMw4KFifGoFisGINisWIMgsWJ8SgwyC/kXySif0FE7zrn3t7+2+8T0deJ6AXn3G8R0VUi+vJwTtE4IFicGINisWIMisWKMQgWJ8aB54Ev5N7779O9RxP/0d6ejnFQsTgxBsVixRgUixVjECxOjEeBgTTke4ZzlCsILVCPtbBxD3VSMuNqS82Qz+qoYWoIr9/bqygR+/Rx9KIeP8SezTduYQrytQ3WyV7tKE/mKmoHZ4RutVNEDdX716/C+sVl1oO5IqYZboiPRn2sA68knKt91mbFSu+5MIV6aamdjxPU9F66xHrp6VnUFbq6SoM8JlI6y+1oeHjyFAl9dWmG9Yvff+tt2PbPv/k/dpY/8zOfhbInP4vrRaEFT9S8hE4bNXzSPzVQGtOf+pnP7ywfe/JTUFYu47Y5oSG/SzMeoi5udYU96r/7F6ghL4XcnlOH0CigG6FO85JI5f7i//oWlH3pN78C63I+wW2leaSU4/GHL78ERaf+/gewXvSsjy+re4WoSUPDEaVud816luIN1G5xG1++ek1ti/dwschzMvIOtd4tVU9Se59EqMNPnNA2qjkhBY/zQNpLHJP9JtbZwuM4LyUUl5zlMK68WHUR3qle1YkT3sjVIsZjmOA9knSE16/SlxfL/CgpTGPulUU9BygTHs9i/oMb6mRuD/7I0sgpDPExWChxPWysYTukNbzuyjjPISkX8d7P1P0eCDPlIMP9lIXXdTlEfXEaY/158XBM9fwgNY8mEA+RIMD63RK5KpaXUbdeqWNs1sb4ftA66uwuVyxxHNWmctuimpvTVnOxmuIe6Cqf9GHiyVHi+BpT4ccfq2dys8l9SqWMcXRkDnNSvH+JPbfDPD5nx2o4F6nb47aJ40iV8TvO4cMnoGz28DSsf/qnf3Jn+a9fxhwoly+dgfXHj/G7wC/+4meg7PpNnuNw+zY+b8bH8X5viX72c0/jfubn8Tr/8x/+0c5yt4t954kTnBNlZQXdtFaWsA/udvl9KBHzWw6aYdtHsj00DMMwDMMwDGNvsRdywzAMwzAMwxgh+ypZ8USUiGHDrU0elqmp9MVhgYftmkqyotykyAsLvuNHFqDs5DEcs1i8xUMfJZV2+B9MsxQgV1BDvSo97MQYf3ZlC8/v9A1MoXttk+2lvMdtc0K2EObwwrTVT0MMT7aVRV1LJV2aLfG+Kgso21m7zcOal98/B2UnfvJxWF+Y4uGoc0LGMczhZU9EKfFwb0+k17524wpsmw+4fZtqmL9QwPqcmODhsgu3UFYUq7T2RRGPlUlMTT82wfZleph1agp9sWdnZ+le5JWE4fzpt3aWt7awfSfEkPHGBpalHiUV9Rr7a51++00oO3kSh1EPH+H21vV16RzHxvmzp6GsGOAxZ8T9UC3hcOwwSbOUmsKicnWFrUMvX7kM214VMpXWJt6HtTIO9ZbLXN/eYWysZxhnVy7zfpMCSuZyBY7jYg5Tjs/W0KJsZorj7Pwy3pfvvYe2dFNHeF9BGduiLNqxXkLpQbGMfZ7sclJlSZYoS1RqCalJjI+OTKSbr5TxOsfquL5x+15JeoY7viyHr2W67yCHv0tVylwpnpQVZIoyFJm6vFDAuHchXo8X8pGopawzA5ZvHJ7CWKQa3pcFYVWaU3IqUhZ0UjbTi/FaNjb4OSAtQYmIxmr4PM6LFPGJ0m14pQuoCMs8n+ExS6JvyDI8960ttFaVz/VaDW19h4n3AfUjvv4k4mdrt4/3yMYW9wXnz78LZV/8ws/B+icOs61gEOJ9qOWMrQ73Y9p6MxDP3ouXTkHZ4uIV3E+b30WWllCiG6jnT1/ERz7EWC5XhCV0AfuU+jg+4wJhQ51TcrDbW2g32+tzG3d6+N70ve/9n53llrpfJmp4j3ji+ycSMj2TrBiGYRiGYRiGMTD2Qm4YhmEYhmEYI8ReyA3DMAzDMAxjhOyrhjxJErq9zhruDaENP/IJTDs7PsHa5aubqMvcXESLpmMnnthZnjmO6Vf20aNQAAAYZ0lEQVTXrp2F9Zvn3ufPjaN9XC5jzXZFpbiPVTroRou1ZJlKJTs1jvqmjmd9Uxzhtn2x7mPUZbd1Kus8n58L8bvUstIyz42xbtMp0f3qMmu8fB/rp1TB654T6Z5PPsn1fGoV9X57SUZELfFdsd9ijXA2g6KwE49x6uBU6dq90qSWy2zhmCr7t5xKeT8u9LyTKqWvTOncbWOK6SNHMI4DYT/ZUVaaWoe/vMwauryyRKwKDXlF6Ttb6hwaIn17s4l68w/efw/W5x87Ls4H6+v6lSs7y4myHZsoYUyVpA5XaUOHycbmJn37z769s74sdJI9ZSMqNat3pZRX93Bb2GD2+qh7LASYKvzoIb4vLq+hFrTXYf1nuYafG5vG9bzjz84fQRvT2yihpEDYBarQpbAgLAiVnjsIMXYyYu13SaVoD6sYD7eXxFwYZbfXaXFZPsA+ZHIKrc4ioVVtNTF2h4X32P6psB1MM6WVD7isWFZxouYTxKIfSZVG2xHeBwHxts0VvC9vnru4szx3FOf81GZQsxuLtO45p3XqsVoX846aGERpyudXqWKc5PLYhlLj3OnifRU43LYnLIyzDM9P2sDqOT8lNfdE2iLq5+YwSVJPm1vczpmYo9PuqLjviFjuYD/x1rto0fv0Z39hZ/nJk09B2fkL+BwuV7jNez20GewLTXu/j/MxWk20vVxbvbmzrNu0WMb6vvABx+Dq6gtQ9tiJx3aWp6YwHn2G/UYh5OfauQsfQNmbr78D6z0x9y0f4r22tMjzvJzDY0xN4D3S6/Fn5VQE9Zh/6LFfyA3DMAzDMAxjhNgLuWEYhmEYhmGMEHshNwzDMAzDMIwRsq8ackdEgfgOMD/LOsligNq8doO15kWlH9pSvuTLjn2AC1p/N4+p4Y89zceZVf7S6zfZ+3PpOqZmrSlfznGhv8oqqAUOyqj/rQkdcUOlwV3rsIayE6H+lHpKN5eK9OQBnk+o9HeJ8CJebKBWb+U2i6yiDM+99zb6Hz92nLVjx46yPrrwBmqR95LYE62kXGdRnzV8HZWy25dYo6h9baWWkYhIyhn7Su+ZV1rb8Rn2iD5yDL3Zp4Wu3mmdumqHxUVOV+yVnrJYQvFvKs7f5TGGcmIeQH0cNblJtorrXY6TjtKNXr2Mmr4nhU6v1cb6unmdva8jpceOlcFrR6ZZL6A2epj0Oh167232b5ee0rkA+41YtHmvjbrMRKV3D4Wfc1HN1yip1Ob1Gb4vdArs9dusaS+FeO97pYttE7dVoaq8sTM8pgv5PggLKuW99CGfQC16qHzJGy3uZ/vqfilX8ZjTC9xfNq8qz2jQhSvPYOXNPy405U0x98UPL7XBnf2LkEU9ObZ9r8d9cqGEJ5U6rKPUc5t6r+ItwhhzQqt+/hSmLT//Bmtrv/APvwhl9QVsw1TMLUpU/gltu9zt8jm026hxlmntY+UtrvvSfp+Poz2zAzUXZnWV+yOf4baJyvcA+1H3a0vMS5DXMWyyNKNGi9tZSO3v0ks/9dTP7yzrfjlU15MTeUXSFOuh08Hrq9f5XosjjLl+JDX6at6CikEv5jFkKl9Fop6BW21+r5qdw/l1X/7Kb+4sHzuO71RZjMdcWuT21x7/165dgfXrN3hOX5ji62iY5+fj1BTml6nWJmG91eT4bDQ45kxDbhiGYRiGYRjGwNgLuWEYhmEYhmGMkH2VrNyBvwN4MaTT1+OVws7p0AQOBVVUKuYba2yL+MMfXIOyzz37DKwnOZYUvPEeDhvWhH1TooZaJmdR3lIRtmO5LW09pSQs/t6SlfExTjOcqSEuPYzVEfZ2VW1TpdLgyuHSfhuHNeemuT4XDuPw09wnUPJz5gynTJ+f4mGiqI/73EtS56gh6pekDKGH9ZfUeEzKOxy67ygJRk0MnX/ixEkoq0/jsPBPfIpTzH/y5Keh7MhhHs7Lq6+0xQrKUIpCTuCVPEiP0VdFuvZAXUsqpV4LOHw3M4cp2M+e4nTKHWXZt7R8C9bPn+Zt2yreVlfYMitSw9Rt/V1eWlYV9u97vs8ysGTsRxwfcYSxIofhS0Ws33JFWf6JywmU/WisLCCbws4yUvaJFbG6tYpSu42CSis+w1KfUhXPr6iGXrvE91+qh6lFXOVyuJ98QXX5Oe67eoT3dBRjPBSLvN9yDaVZ2RbXbRzjfadTfxdEavWqsGfNBdiHDZMsk8Pa2A6R7DsjPPc0wL4+9XzvFcIKlHnC+zvqCIs31ReUHcuDcikeI1KyFGlfGHewrkkdsynqvqtsV9vieRIr+UKaaAkLn1O3o+MCr7vR4PPrtLH+KhWOmwn1XNcymYqIE2mBOGwyn1IUsZTLidekWg1T3n/hWZYXLSygtPHSxQuw3ulIGSzWobZ1LJf5OHNzx6Gs3+d2XG4p6Zhqf2mtm1e3V76gpHfiXaSoLFBlO66u3Iayfk9LvoQcTMVRFKHNaa/L++31MO4PHWIpYG0M37/yIcZDnPBn45iP770WcT3c2C/khmEYhmEYhjFC7IXcMAzDMAzDMEaIvZAbhmEYhmEYxgjZVw2590SJ0BR5YSW4vIFas6L4qnBiHC1uAmUfN1Zk7eVGgqljr7x/BdYn52Z3lm+0Ud+UCPlVSdnOBV5ZPaUsyJrMo83beoo6qbrQFU+FqEFLhZZQp8jtKZ2rm+LP1ut6P3gt7S6fg9ZRhUKrOaaszapKFF0VOrNMnt8w06M7R1QSoSnmE4QqPXG9xHXUVBq5qIGxsL4utG8e66vbwjY7f5ZTGS9duw5ltTK3d6jiJCxjfQZC05cpPV2g9H5bYi5EpjSdhZDr48L581Cmtbcrq8s7y/0Y9X3NJmoOX/vbV3hbba8ltNJ5Naeip/Tv0vItv49a4CRJaH1NaDOFtVdRaSQrYr1YUPM8HNZ30uU46zcw5rrKRrTT5PJQpX+eEvMushJqbdfaqCnvbXF8lBzGSjFWlmWwqtJ5Z9xut3o4Z6A8hdfS90IvrWxWnbLCk+EbKj8xL7XzDuug28JjSol0tcYacm2RtueIfjAT56/t3yIx9yBSevhIWcd1hR1opahs7jzWQyL66PljOA9keoz780NHpqFsfR0teGV6dK+scrt36Xn5/HpKp7y6xvZ0Y2NjUBarOSOp8P5LVdv3lSVqVzx7kgSPKZ01tS2tfqYVhYXsMOcsabwn6vW57aamuN/Ih/gsbWyt7yxHEWr0vcPXq1jUYVjA/SQpXl8Q8GfzedRLFwpcL8Ui9nGZetbncuLc1XyScfVeNTfL88fK5RqU/fX3XuPjh/i+U6+jlerMLM+xitXzZ3V5CdYpEPNd1HMjDMX5KuvrJNV9E9dtPxLvmAdLQm6/kBuGYRiGYRjGKLEXcsMwDMMwDMMYIfsqWQmCgEpiuD8SQ5sbTRzumRDZLnUGucYWDvVKW63JEtoBuhjHLC6e5kyU40Xc9tgsW1h11HCyz5SFmufzKwRYjZMVHJqOhNwgVHZ27S0eztX5DfPKWkwO4VQquLUeYoyEdCJV8hKZsUtbkl06uwLrc5M8fHr8MMt9/ve5qzQsnHMUiMyUJTFE1ia8lqVrF3eWu8oa69Z1zDq6tMJSjvYWXrdXw+UyavRQGmyphuddDmMhEENtTo+fqfWAuA3jCIf6Hn+M7SmdGgpdW0MbqoV5juOz7y9DWaYy5W1t8Ge9yvMXCKmQd+rccyj5yHLCasoNOeWiwDmiXMjHK4hseEpBQEHC/Uh/E+VhUR8lS10RH1ETy5ySCeSFfKcyiVZuMvtgqDP4eozXqpDepSsqq6KymssLmUqmhtFTUf9rDvvV8NA6rJdqfMyi8kVzKfY/kchu2m0o6zthWVYKVGw4ZZkZC4mPsG/VmWz3FJ9B7EddjoVYySq8WNVSiSTFa+mL2ynRKj41zJ4Rt384ixKRyjTXQ6uL8dbcQuldV/TZTknHYhWbPSFh2WigXK0rJIiHplEmk8Qqa7SQ1+Xz2P94ry/83vIWF3DMB8qqV7d+Kuq629P2jsMjyOWoNs4yjFRIj1bXsW06bbZ4TDP1DjOJ93ujwfVy+dJNKOupOAvyXG86BgvC8q+iMkxr6aqUrATqPSVSUq1lkWG1WsHnRLfLraOzEeccvu9USrzfkrLElHISInwEhnmU30h6qn/WEqt8KLOgctyY7aFhGIZhGIZhGANjL+SGYRiGYRiGMULshdwwDMMwDMMwRsi+asjjOKYVYXtTrLLN0UwdNdGHpznNuU4dHCrd7mRF6ImUFrhYR62RLC4qTVVJ6mTVVxXvUCfXI9ZJ5dXG5TJqQ51IzdxrNaAsFtrQ+hjqwUpl3K8TetSS1nsWUK/WFTZkOmN7LNJGoxKU6NA4WhhNT7I1Uk3YxuXc8L7LuSCgsMK2SwVh+5SpNusLfd2SsqNrK8ulgtCYz8zP47ZdrAlpUXZ/Gz+lUVMaPrmeKZ2/Xk886/YytZ/TIsX9J09+Gsrm5w7D+rVrH+ws93qoa3TqfGUzOmXDKFed0oy7ENu/IFJiu/z+fc8PnKOK0O37mOuwp1KFd0XK8aiLGm2vtPUkbLRI21XqJpfdhtJBB8Ljz6n5D1Vly+h6fA7JltKMJ9omTcRVgOcXQl+gUqCrVPCZ0HtmyhbNqbknXgimfUvFrpCjxgGWafu3nrDX7CX31hvvJWmaQUr3jQ1hHUi6/vLic1i2tYVx0xnndopqeN05ZV0ZiH4kVfdIV/RjXdVv9fsYmzJVeZjDGNK2h22h+19fx3lRYXhvzW67reYeCI1uqYRzC5zTFqgcq8USPgsrYn6V1vc2m2pejyiPlGXjMPHeU5JwPW61+Nh6nkCUcr0kCV4rEZ5zXvRTFy9exv2oHRcct00caf28eA9Q9oQ9ZUEprQ4D9Rxz6hkuYz3qY/8jFdw+U/c3KevNLsdZrYZWlhPjU7C+tHyNj6/2K7uffk/ZYpePwXpY4HenTlc+R4dozzwE7BdywzAMwzAMwxghD3whd86VnHN/75x7xzl32jn377f/fsI596pz7gPn3P90zt3767bxY4HFijEIFifGoFisGINgcWI8CgzyC3mfiH7Ze/9ZInqKiH7NOfcsEf0nIvpD7/2TRLRBRL81vNM0DggWK8YgWJwYg2KxYgyCxYlx4HmghtzfEXJ9KJwLt/95IvplIvrn239/noj+HRH9l/vtKwgC8M+u1/jL6pjy1S4UWae2voEauoLyQc0JLVymPFG9Skk7PcFao7LyvQxlqmj1VaWV4jmsCa1e0kOt4FhJpbMV+tSc0g6WhXbeK51uoDytnfD31V7PpSLq+qRdbqq2TYSutVJFDVqm0j2HQnMcCU2u1jgT7V2sZM5RX2jFvRAzR1r3P8Wa9/kK6tWcSitcE/MJvNIFX7mMmj7p0Su984mIcsI/N6fmFrgYtXep8HrVx0yULjLNhDdyhPHWFvF25tx5KNP+so0t9pNVNsUUqjrxYoKB1oJKDXlOeQbn1ZwFeb/q9M2avexT0jim5jJ753eFDjVuo943E97uBXWpFTUnIxB9TKS035nyZJfaS6/aLRNzE1yA+9G+340t1jjnlGY8n+J6TmhO8wXVT4hG13kY0rbSNee5TqIEY1fPnAiFBtWlWIGpmA/R1zb0qi9NMqkNZnXqbnrPvYqVOIlp5TbfF1ubrHMtKX/4sZD7RK2X7txahfXlRZ4TNV2fg7JiQV2P9FzW+m1Rf6ura1B08wrmfJDzJIpF7Jucuk87Pem3jm1/SMwP6qu+yKu2kBrynJqn1VO69bLoLyH9OeG90thCX/S82rYs6r5a1Vk6kD3tU1JPjSbXsawbrbuWOveCyoGSy6MHtw+4n1rfxDgqKL9ukU6BkhR14bG4T4vqmEFQVOu8o3xu8CmDBfU+kQ9lXhOMo24H58Vl4p2r18c2Lqk5BSURv3paWk70j9UqXueJxz8F66HYTyT6vANmQz6Yhtw5l3POvU1EK0T0EhFdJKJN7/2HvcgNIlq4x2d/2zn3unPu9ZaanGI8evyosSLjJBri5C7j4WCv+hT9ImE8euxFn9JotHWx8YixZ+8prc3dNjGMoTPQC7n3PvXeP0VER4jo80T0qQd8RH72G977Z7z3z9SKJt961PlRY0XGSSF3P1cT41Fgr/qUovql3nj02Is+pV6vPvgDxoFmz95TVCZKw9gvPpLtofd+0zn3MhH9HBFNOOfy298+jxDRzft/migIHBXFcFZNyCXyBfxu0BDpg2808BtrYxMtcKarLEWoj6thoz7ud7nBqcIrFRw+KYJ9Gb4UxspeKhLShE1t15Tg8FpF2O1p+UMshp6dGgovaHmBGH/R6Yu13EAOK/ZiHJmoifOpqSHZSKfeFeNIYA33YFnCjxwr3jlKxDl6kXI6PzkD284dYfujyiz++BGrr5vtLktuNlW6+UIV7R5rU7M7y3fJPIR0KFTDt3ltCSWGfn2Kw8CxSgcd9Tjmez38RU+OIBcKavhW7TcVub/7yuYuUHUihzR1k0pZUqiGO0vKsi8nrEgzP/hI2MftU+IookUxpO/E0H9RpXDPiespquFx38d2i6RtaF7JM9R+EyGTS5V9ohPH1DKkvOoLgpQbJ1Hn43UKctlYHrclIXfJqUbNMmWlmglp2F22Y/hZGffKKZDk6fXVfrRlphe/A3l5jAcML3+cWEmShFbFPb+xIZ4DVSVLEc+eXKhS0Xfwnr3V4sMuzByFsnodny/Svlfbka6vLu8sX7mMEpXF69dhvdtiKVa1hra+9YlJWO+Lvr+its2EJq2rY1NZoMrnSxTrOMnuue3mJj67E3l/qmfPWAVlGwVxj8bx4CNhH7dPISJKhHSzVOa+TktnAmE5qiWIrZZ6T5nmZ5dzyqa4i7KPbq8htsV7tjbG0kz1+CHvcb/5vJDEKv1ikuH5SnnRhLI/Lpe4bZJUv2vgsyEQ7zG6DwnLGCvHn2AL3zhC6VOxxO+HP/2Zp6DsxDG0PcwRfzafv/c71cPOIC4rM865ie3lMhH9ChGdJaKXieifbm/2HBG9OKyTNA4GFivGIFicGINisWIMgsWJ8SgwyC/k80T0vHMuR3de4F/w3v+Fc+4MEX3LOfcfiOgtIvrmEM/TOBhYrBiDYHFiDIrFijEIFifGgWcQl5VTRPT0Ln+/RHd0WoZBRBYrxmBYnBiDYrFiDILFifEo4HT62qEezLlVIrpKRNNEtPaAzX+cOQj1c8x7P/PgzT46FicDc1Dqx2Jl9ByE+rE4GT0HpX4sVkbPQaifocXJMNjXF/Kdgzr3uvf+mX0/8AHB6ucOVg/3x+qHsbq4P1Y/d7B6uD9WP4zVxf2x+tl7BrI9NAzDMAzDMAxjONgLuWEYhmEYhmGMkFG9kH9jRMc9KFj93MHq4f5Y/TBWF/fH6ucOVg/3x+qHsbq4P1Y/e8xINOSGYRiGYRiGYdzBJCuGYRiGYRiGMULshdwwDMMwDMMwRsi+vpA7537NOXfOOfeBc+5r+3nshxHn3FHn3MvOuTPOudPOud/Z/vuUc+4l59yF7f8nR32u+43FCmKxsjsWJ4jFyb2xWEEsVnbH4gSxONk/9k1Dvp3S9jwR/QoR3SCi14joK977M/tyAg8hzrl5Ipr33r/pnBsjojeI6DeI6KtEtO69//p2hzDpvf+9EZ7qvmKxcjcWK3djcXI3Fie7Y7FyNxYrd2NxcjcWJ/vHfv5C/nki+sB7f8l7HxHRt4joS/t4/IcO7/2i9/7N7eUmEZ0logW6Uy/Pb2/2PN0J/h8nLFYUFiu7YnGisDi5JxYrCouVXbE4UVic7B/7+UK+QETXxfqN7b8ZROScO05ETxPRq0Q0571f3C5aIqK5EZ3WqLBYuQ8WKztYnNwHixPAYuU+WKzsYHFyHyxOhotN6nwIcM7ViOhPieh3vfcNWebvaIrMm9IgIosVYzAsToxBsVgxBsHiZPjs5wv5TSI6KtaPbP/txxrnXEh3gvxPvPff3v7z8rZu60P91sqozm9EWKzsgsXKXVic7ILFya5YrOyCxcpdWJzsgsXJ/rCfL+SvEdFPOOdOOOcKRPTPiOg7+3j8hw7nnCOibxLRWe/9H4ii7xDRc9vLzxHRi/t9biPGYkVhsbIrFicKi5N7YrGisFjZFYsThcXJ/rGvmTqdc79ORH9ERDki+mPv/X/ct4M/hDjnfoGIXiGid4ko2/7z79MdfdYLRPQYEV0loi9779dHcpIjwmIFsVjZHYsTxOLk3lisIBYru2Nxglic7B/7+kJuGIZhGIZhGAZikzoNwzAMwzAMY4TYC7lhGIZhGIZhjBB7ITcMwzAMwzCMEWIv5IZhGIZhGIYxQuyF3DAMwzAMwzBGiL2QG4ZhGIZhGMYIsRdywzAMwzAMwxgh/x93I4hNl8DIIQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 864x432 with 10 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DX0gcIXeVpqm",
        "colab_type": "code",
        "outputId": "c785b9d5-f729-40ba-946c-41e07b233135",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 289
        }
      },
      "source": [
        "!nvidia-smi"
      ],
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Thu May  7 12:42:51 2020       \n",
            "+-----------------------------------------------------------------------------+\n",
            "| NVIDIA-SMI 440.82       Driver Version: 418.67       CUDA Version: 10.1     |\n",
            "|-------------------------------+----------------------+----------------------+\n",
            "| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n",
            "| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n",
            "|===============================+======================+======================|\n",
            "|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |\n",
            "| N/A   52C    P0    66W / 149W |  10881MiB / 11441MiB |      0%      Default |\n",
            "+-------------------------------+----------------------+----------------------+\n",
            "                                                                               \n",
            "+-----------------------------------------------------------------------------+\n",
            "| Processes:                                                       GPU Memory |\n",
            "|  GPU       PID   Type   Process name                             Usage      |\n",
            "|=============================================================================|\n",
            "+-----------------------------------------------------------------------------+\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "82DlAAmHsb7r",
        "colab_type": "code",
        "outputId": "0340323a-1f37-4c00-fbe1-c8135780cdc7",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "tf.saved_model.save(model, \"saved/1\")"
      ],
      "execution_count": 51,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "INFO:tensorflow:Assets written to: saved/1/assets\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qV4xe7CzwdWa",
        "colab_type": "code",
        "outputId": "5a26eb14-b435-4d02-892f-6c4c8085f008",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 119
        }
      },
      "source": [
        "!ls -al saved/1"
      ],
      "execution_count": 52,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total 2520\n",
            "drwxr-xr-x 4 root root    4096 May  7 12:43 .\n",
            "drwxr-xr-x 3 root root    4096 May  7 05:46 ..\n",
            "drwxr-xr-x 2 root root    4096 May  7 05:46 assets\n",
            "-rw-r--r-- 1 root root 2563542 May  7 12:43 saved_model.pb\n",
            "drwxr-xr-x 2 root root    4096 May  7 12:43 variables\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NhIZCgAMqZ97",
        "colab_type": "code",
        "outputId": "eb867d10-ed65-4d3c-eedf-4925a6ae9dba",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "model = tf.saved_model.load(\"saved/1\")\n",
        "print(x_test.shape)\n",
        "pred = model(tf.cast(x_test,tf.float32))\n",
        "pred = np.argmax(pred, axis=1)\n",
        "print(pred[:10])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(10000, 32, 32, 3)\n",
            "[3 8 8 0 6 6 1 6 3 1]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NGUBB4XMrXq8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}